references/pdf-preprocessing.md
2.6 KB查看排版效果| 1 | # Pdf Preprocessing |
| 2 | |
| 3 | > 来源: pdf-ocr-md v3.3.0 SKILL.md | 从主文件拆分,保持原内容不变 |
| 4 | |
| 5 | ## D:文档预处理 — 扫描件 OCR 增强 |
| 6 | |
| 7 | 适用于质量不佳的扫描件(手机拍照、弯曲书页、倾斜/倒置的文档)。 |
| 8 | 预处理后 PaddleOCR 的中文准确率可从 ~97% 提升到 ~98%+。 |
| 9 | |
| 10 | ### 安装 |
| 11 | |
| 12 | ```bash |
| 13 | pip install opencv-python-headless numpy Pillow pdf2image |
| 14 | ``` |
| 15 | |
| 16 | ### CLI 命令 |
| 17 | |
| 18 | ```bash |
| 19 | # 全部预处理(推荐) |
| 20 | python scripts/pdf_preprocess.py input.pdf -o ./preprocessed --all |
| 21 | |
| 22 | # 仅倾斜校正 |
| 23 | python scripts/pdf_preprocess.py input.jpg -o ./output --deskew |
| 24 | |
| 25 | # 仅方向校正 |
| 26 | python scripts/pdf_preprocess.py input.jpg -o ./output --orient |
| 27 | |
| 28 | # 仅文档展平(弯曲/透视照片) |
| 29 | python scripts/pdf_preprocess.py input.jpg -o ./output --unwarp |
| 30 | |
| 31 | # PDF 全页 + 高DPI |
| 32 | python scripts/pdf_preprocess.py input.pdf -o ./preprocessed --all --dpi 400 |
| 33 | |
| 34 | # 预览模式(显示对比图,不保存) |
| 35 | python scripts/pdf_preprocess.py input.jpg --preview --all |
| 36 | ``` |
| 37 | |
| 38 | ### 预处理项说明 |
| 39 | |
| 40 | | 预处理 | CLI 参数 | 适用场景 | 效果 | |
| 41 | |--------|---------|---------|------| |
| 42 | | **倾斜校正** (deskew) | `--deskew` | 扫描件轻微歪斜 (<15°) | 自动检测角度并旋转正位 | |
| 43 | | **方向校正** (orient) | `--orient` | 页面旋转/倒置 | 检测文本方向并自动旋转到正位 | |
| 44 | | **文档展平** (unwarp) | `--unwarp` | 手机拍的弯曲/透视变形的文档 | 自动检测边界, 透视变换展平 | |
| 45 | |
| 46 | ### 工作流集成 |
| 47 | |
| 48 | ```bash |
| 49 | # 完整管线: 预处理 → pdf2md |
| 50 | python scripts/pdf_preprocess.py input.pdf -o ./preprocessed --all |
| 51 | pdf2md ./preprocessed/input_p001.jpg -o ./output_dir |
| 52 | |
| 53 | # 对于平整扫描件, 预处理效果不大, 可跳过 |
| 54 | pdf2md input.pdf -o ./output_dir |
| 55 | ``` |
| 56 | |
| 57 | ### 预处理效果预测 |
| 58 | |
| 59 | | 文档类型 | 建议 | 预期提升 | |
| 60 | |---------|------|---------| |
| 61 | | 平整扫描件 (A4 扫描仪) | 跳过预处理 | OCR 已很好, 无明显提升 | |
| 62 | | 轻微歪斜 (< 15°) | `--deskew` | 准确率 +1~2% | |
| 63 | | 照片 (手机拍文档) | `--deskew --unwarp` | 准确率 +3~5% | |
| 64 | | 页面倒置/旋转 | `--orient` | 从乱码到正常识别 | |
| 65 | | 弯曲书页 | `--unwarp` | 准确率 +2~4% | |
| 66 | |
| 67 | ### 脚本参考 |
| 68 | |
| 69 | 预处理脚本位于 `scripts/pdf_preprocess.py`,支持作为 Python 模块导入使用: |
| 70 | |
| 71 | ```python |
| 72 | from scripts.pdf_preprocess import preprocess_image, deskew_image, unwarp_image |
| 73 | import cv2 |
| 74 | |
| 75 | img = cv2.imread('scan.jpg') |
| 76 | processed = preprocess_image(img, deskew=True, orient=True, unwarp=True) |
| 77 | cv2.imwrite('corrected.jpg', processed) |
| 78 | |
| 79 | --- |
文件内容是平台检查时读出的文本,只供查看。平台不会运行包里的任何脚本或程序。

