# PDFMathTranslate 扫描 PDF 翻译：实验 OCR 与缺字复查

用原创数字 PDF 和图片 PDF 做对照，实际运行本地 Tesseract 识别，再说明 pdf2zh 实验 OCR 的安装、限制与复核方法。

运行范围：原创 PDF/CSV/EPUB/HTML 材料与本地验收已实际执行。没有调用翻译模型、没有连接 Zotero 库、没有填写凭证。官方截图为官方项目示例，不是本练习运行输出。

依赖：Python 3.11+；PDF 验收需 Poppler 的 pdfinfo/pdftotext；OCR 复现需 tesseract 英文语言数据。安装翻译工具时遵循各自官方 Python 要求。

## 1. 先确认确实没有文字层

在 scan.pdf 里尝试选择文字，再用 pdftotext 检查。练习包同时给出源数字 PDF，便于判断是 OCR 错字还是翻译变化。

```sh
pdftotext scan.pdf scan-layer.txt
python3 verify.py
```

## 2. 核对实验 OCR 支持

主仓库把 2026-09-08 的 OCR 标为 experimental；其主要目标是白底扫描页。本文固定官方提交 7b57f11ac04409aaac1aba141d0882619cb689b3，不假设 PyPI 1.9.11 已发布该 extra。已有文字页、混合扫描页、手写和行内公式需另查；不要用 ultrafast。

## 3. 从对应提交安装 OCR extra

遵循主仓库 Python 3.11–3.12 要求，在独立环境从固定功能提交安装 ocr extra。项目通过 PyMuPDF 调用 OCR，首次可能下载 tessdata_fast；本页的 tesseract 命令是独立离线识别演练，不冒充 pdf2zh 内部运行。该环境安装与模型翻译未在本机执行。

```sh
python3.12 -m venv .venv
.venv/bin/python -m pip install "pdf2zh[ocr] @ git+https://github.com/PDFMathTranslate/PDFMathTranslate.git@7b57f11ac04409aaac1aba141d0882619cb689b3"
```

## 4. 真实复现本地识别练习

包内 scan.png 是实际扫描输入，ocr.txt 是本机 Tesseract 的真实输出。安装本地 Tesseract 后执行相同命令；对照 21.5、0.8 与 V01，保留识别错误。

```sh
tesseract scan.png ocr -l eng --psm 6
python3 verify.py
```

## 5. 运行 pdf2zh 正常 fast 路径

按官方说明指定输入语言，必要时用 PDF2ZH_OCR_LANGUAGE 覆盖 Tesseract 语言代码；目标译文语言与 OCR 源语言是两件事。此步骤会调用你选择的翻译后端，本教材未运行。

```sh
PDF2ZH_OCR_LANGUAGE=eng .venv/bin/pdf2zh scan.pdf -li en -lo zh -t 1 -o output
```

## 6. 把识别错误与译文错误分开

先对照 source.pdf 与 ocr.txt 修正识别核对表，再在实际译文找对应数字。公式与表格可能保持为图片；原文保留不等于这些区域已被译出。

## 7. 只重做有问题的页

将问题页号、原字、识别字、译文和处理方式记录到 checklist.csv。保留原 PDF；不要用手工填好的中文覆盖实际模型结果后宣称 OCR 自动完成。

## 来源

- https://github.com/PDFMathTranslate/PDFMathTranslate

## 教材

原创输入材料可用于学习练习。官方图片版权归原作者，网页中保留来源；ZIP 不打包这些官方图片。
