Skip to content

mlb0925/PaddleOCR_PDF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

📄 PDF OCR 可搜索化工具(支持中英文、竖排/旋转文字)

基于 PaddleOCR + GPU 加速 + 多进程并行,将扫描版 PDF 转换为可全文检索、可复制文字的高质量可搜索 PDF。


✨ 特性

  • 高精度 OCR:使用 PaddleOCR v5 服务端模型,支持中文、英文、符号混合识别
  • 复杂排版支持:自动处理竖排文字旋转文本、倾斜页面
  • GPU 自动加速:检测 CUDA 环境,自动启用 GPU 提升速度(3~5 倍提速)
  • 多核并行处理:利用多进程同时处理 PDF 多页,大幅提升吞吐量
  • 无损输出:原始图像完全保留,OCR 文字以透明层叠加,仅用于搜索/复制
  • 小体积输出:自动压缩 PDF,减少文件大小
  • 跨平台支持:Windows / Linux / macOS 均可运行

📦 安装依赖

pip install paddleocr PyMuPDF Pillow reportlab tqdm

💡 GPU 用户:请安装 paddlepaddle-gpu

pip uninstall -y paddlepaddle
pip install paddlepaddle-gpu -f https://www.paddlepaddle.org.cn/whl/stable.html

🗂️ 目录结构

.
├── ocr_pdf_gpu_multicore.py      # 主程序脚本
├── input_pdfs/                   # ← 放入待处理的 PDF 文件
├── output_pdfs/                  # ← 输出结果(自动生成)
├── pdf_pages/                    # ← 临时文件目录(可自动清理)
└── fonts/
    └── PingFang-SC-Regular.ttf   # ← 中文字体(可替换)

🔧 字体说明

  • 默认使用 ./fonts/PingFang-SC-Regular.ttf
  • 若缺失,程序会降级使用系统字体(可能影响中文显示)
  • 推荐替换为 思源黑体 或本地中文字体

⚙️ 配置参数(在脚本顶部修改)

INPUT_DIR = "./input_pdfs"        # 输入目录
OUTPUT_DIR = "./output_pdfs"      # 输出目录
TEMP_ROOT = "./pdf_pages"         # 临时文件目录
FONT_PATH_CN = "./fonts/PingFang-SC-Regular.ttf"
MAX_WORKERS = 4                   # 并行进程数(建议 ≤ CPU 核心数)
DPI = 300                         # 渲染精度(越高越清晰,但更慢)
KEEP_TEMP = False                 # 是否保留临时文件(调试时设为 True)

▶️ 使用方法

  1. 将待处理的 PDF 文件放入 ./input_pdfs/ 目录
  2. 确保中文字体存在(或修改 FONT_PATH_CN
  3. 运行脚本:
python ocr_pdf_gpu_multicore.py
  1. 按提示输入 PDF 序号(如 1
  2. 等待处理完成,结果保存在 ./output_pdfs/xxx_ocr.pdf

输出 PDF 支持

  • 全文搜索(Ctrl+F)
  • 文字复制粘贴
  • 保持原始图像质量
  • 小体积(自动压缩)

🧪 性能参考(实测)

环境 PDF 页数 处理时间
i7-13700H + RTX 4060 (GPU) 100 页 ≈ 1.5 分钟
i7-13700H (CPU only) 100 页 ≈ 8 分钟

提示:DPI=300 适用于大多数文档;若对速度要求高,可降至 200


❓ 常见问题

Q: 报错 “字体文件未找到”

A: 下载中文字体(如 PingFang SC思源黑体),放入 ./fonts/ 目录,或修改 FONT_PATH_CN 路径。

Q: GPU 未生效?

A: 确认已安装 paddlepaddle-gpu,且 CUDA 驱动版本兼容。运行时应看到提示:“检测到 GPU,使用 GPU 加速”。

Q: 内存不足(大文件崩溃)?

A: 尝试降低 DPI(如 200)或减少 MAX_WORKERS(如 2)。

Q: 如何批量处理所有 PDF?

A: 修改脚本,注释掉用户选择部分,改为遍历 pdf_files 列表自动处理。


📜 许可证

MIT License — 允许自由使用、修改、商用。


🙌 致谢


💡 提示:本工具适用于学术文献、历史档案、工程图纸、合同扫描件等场景。

👉 CSDN 博客地址: https://blog.csdn.net/weixin_46244623

About

将**不可搜索的扫描版 PDF**(图片型)通过 OCR 技术转换为**可全文检索、可复制文字**的 PDF 文件,同时保留原始排版,并支持: - 中文、英文、符号混合识别 - 竖排文字、旋转文字正确还原 - GPU 自动加速(若可用) - 多核 CPU 并行处理提升效率 - 输出 PDF 体积小、兼容性好

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages