转换管线说明
将扫描版 PDF(含 OCR 文本层)重建为 LLM 友好的 Markdown。
用法
export PYTHONPATH="C:/Users/1atk/AppData/Roaming/Python/Python314/site-packages"
C:/Python314/python.exe extract.py # 阶段1:几何抽取(需 ../汉英翻译教程.pdf)
C:/Python314/python.exe build_md.py # 阶段2:结构重建 + 清洗 + 输出产出(上级目录):汉英翻译教程.md、chunks/unit_NN.md、清洗报告.md
核心设计
关键结论:不能依赖 PyMuPDF 的 get_text() 线性流。 本书是扫描件,
OCR 文本层按 y 序跨列混排,直接取文本会把中英对照框的左右栏逐行交错。
| 环节 | 做法 |
|---|---|
| 抽取单位 | 文字块(block)级 bbox,非行级——行级 y 抖动导致分栏误判 |
| 双栏判定 | 按块【左边界 x0】分簇:中文栏 x0≈67,英文栏 x0≈244,取间隙中点作分界 |
| 对照框范围 | 中英块 y 区间【交集】;框外内容按 y 序独立成块 |
| 页边剥离 | 页脚 y0>=690;页眉 y0<=52 且(字号<8.6 或形如「第N单元」或含噪点字符) |
| 输出顺序 | 框外(上) → 中文栏全文 → 【参考译文】→ 英文栏全文 → 框外(下) |
| OCR 清洗 | 词形修正 / 句末 o→。 / 顿号 • → 、 / CJK 半角逗号 / 生僻乱码字 |
已知 OCR 层缺陷(已处理)
- 栏串行:中文栏末句接续左栏内容 → 由几何分栏解决
- 句末标点误识:
requirements o、characteristicso→ 规则修正 - 序号误识:
人、核心概念解读、4、核心概念解读→ 按栏目名反查正确序号 - 页眉噪点:
Mr — »Mi —第二年兀、第H-单元→ 页眉判据剥离 - 跨栏注释断裂:
(2017年10月18日…与续行分属不同区域 → 未闭合括号吸附
中间产物
raw_pages.json:246 页的结构化块(含坐标、字号、kind)clean_log.json:逐条剥离/修正记录