news 2026/5/1 9:31:53

使用 PaddleOCR + 多进程 + GPU 加速实现 PDF 可搜索化(支持中英文、竖排/旋转文字)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 PaddleOCR + 多进程 + GPU 加速实现 PDF 可搜索化(支持中英文、竖排/旋转文字)

✅ 项目目标

不可搜索的扫描版 PDF(图片型)通过 OCR 技术转换为可全文检索、可复制文字的 PDF 文件,同时保留原始排版,并支持:

  • 中文、英文、符号混合识别
  • 竖排文字、旋转文字正确还原
  • GPU 自动加速(若可用)
  • 多核 CPU 并行处理提升效率
  • 输出 PDF 体积小、兼容性好

📦 所需依赖

pipinstallpaddleocr PyMuPDF Pillow reportlab tqdm

注意:paddleocr会自动安装paddlepaddle。若要启用 GPU,请确保已安装 CUDA 并使用paddlepaddle-gpu


📁 目录结构准备

在项目根目录下创建以下文件夹和文件:

your_project/ ├── ocr_pdf_gpu_multicore.py ← 主脚本(本文核心) ├── input_pdfs/ ← 放入待处理的 PDF ├── output_pdfs/ ← 输出结果 ├── pdf_pages/ ← 临时文件(自动创建) └── fonts/ └── PingFang-SC-Regular.ttf ← 中文字体(可替换为思源黑体等)

💡 字体建议:使用支持中文的 TTF 字体(如 PingFang、Microsoft YaHei、Noto Sans CJK)。若缺失,程序会降级使用 Helvetica。


🔧 核心配置说明(脚本开头)

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

🌟 技术亮点解析

1️⃣GPU 自动检测

defget_device():try:importpaddleifpaddle.is_compiled_with_cuda()andpaddle.device.cuda.device_count()>0:print("检测到 GPU,使用 GPU 加速")return"gpu"except:passprint("使用 CPU")return"cpu"
  • 自动判断是否可用 GPU,无需手动切换。
  • 实测:RTX 4060 上 OCR 速度提升 3~5 倍。

2️⃣PaddleOCR 高精度模型

ocr=PaddleOCR(text_detection_model_name="PP-OCRv5_server_det",text_recognition_model_name="PP-OCRv5_server_rec",device=DEVICE)
  • 使用PP-OCRv5 服务端模型,对模糊、倾斜、低分辨率图像鲁棒性强。
  • 支持竖排、弯曲、旋转文字检测。

3️⃣多进程并行处理每一页

  • 将 PDF 拆分为 PNG 图片(fitz渲染,DPI=300)
  • 使用ProcessPoolExecutor同时处理多页
  • 每页独立生成带隐藏 OCR 文字的 PDF 页
  • 最后合并为完整 PDF

⚡ 性能对比(100页 PDF,i7-13700H + RTX 4060):

  • 单进程:约 8 分钟
  • 4 进程 + GPU:约 1.5 分钟

4️⃣智能文字排版还原

✅ 普通横排文字
  • 自动计算字体大小、字符间距
  • 文字透明(setFillAlpha(0)),仅用于搜索,不遮挡原图
✅ 竖排/旋转文字
defdraw_rotated_or_vertical_text(c,img_height,box,text,base_font_size=12):# 判断是否为竖排(75°~105°)或斜排# 使用 canvas.rotate() 精准还原方向# 竖排时逐字绘制,保持阅读顺序
  • 完美支持古籍、日文、工程图纸等场景

▶️ 使用步骤

  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 搜索任意文字
  • 可复制粘贴内容
  • 原始图像完全保留
  • 文件体积压缩(garbage=4, deflate=True

🛠️ 常见问题解决

❌ “字体文件未找到”

  • 下载 PingFang SC 或 思源黑体
  • 修改FONT_PATH_CN路径

❌ “CUDA error” 或 GPU 未启用

  • 确认已安装paddlepaddle-gpu
    pip uninstall paddlepaddle pipinstallpaddlepaddle-gpu -f https://www.paddlepaddle.org.cn/whl/stable.html

❌ 处理大文件内存不足

  • 降低DPI(如 200)
  • 减少MAX_WORKERS(如 2)

📜 许可与扩展

  • 本脚本基于 MIT 协议,可自由修改商用
  • 可扩展功能:
    • 批量处理所有 PDF(取消用户选择)
    • 添加日志记录
    • 支持 PDF 密码解密(fitz.open(password=...)

💬 结语

通过PaddleOCR + ReportLab + PyMuPDF + 多进程的组合,我们实现了高性能、高精度的 PDF OCR 解决方案。无论是学术论文、历史档案还是工程图纸,都能一键转为可搜索格式!

GitHub 示例项目:欢迎 Star!https://github.com/mlb0925/PaddleOCR_PDF


觉得有用?点赞 + 关注,获取更多自动化办公技巧!👍

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:30:44

Qwen3-Embedding-0.6B多场景应用:教育领域文本分类部署

Qwen3-Embedding-0.6B多场景应用:教育领域文本分类部署 1. Qwen3-Embedding-0.6B:轻量高效,专为教育场景而生 Qwen3 Embedding 模型系列是 Qwen 家族最新推出的专用嵌入模型,不是通用大模型的副产品,而是从设计之初就…

作者头像 李华
网站建设 2026/5/1 4:47:09

fft npainting lama特征可视化:中间层响应图解释性研究

FFT NPainting LaMa特征可视化:中间层响应图解释性研究 在图像修复领域,我们常常惊叹于模型“无中生有”的能力——移除水印、擦除路人、修复划痕,结果自然得仿佛从未被修改过。但你有没有想过:模型究竟是“看懂”了什么&#xf…

作者头像 李华
网站建设 2026/5/1 5:46:46

【开题答辩全过程】以 高校宿舍维修系统的微信小程序的设计为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

作者头像 李华
网站建设 2026/5/1 5:45:06

Glyph避坑指南:部署视觉推理模型时这些错误千万别犯

Glyph避坑指南:部署视觉推理模型时这些错误千万别犯 1. 为什么Glyph不是“另一个VLM”,而是视觉推理的新范式 很多人第一次看到Glyph,会下意识把它归类为“又一个视觉语言模型”。但这种理解偏差,恰恰是部署过程中踩坑的第一步。…

作者头像 李华
网站建设 2026/5/1 5:44:12

Glyph灾害预警系统:卫星云图推理部署实战

Glyph灾害预警系统:卫星云图推理部署实战 1. 为什么用Glyph做灾害预警? 你有没有想过,当台风正在海上生成、暴雨云团正快速向城市移动时,我们能不能让AI“看懂”卫星云图,提前几小时甚至一天发出精准预警&#xff1f…

作者头像 李华
网站建设 2026/5/1 6:49:41

fft npainting lama颜色失真问题解决方案汇总

FFT NPainting LaMa颜色失真问题解决方案汇总 在使用FFT NPainting LaMa图像修复系统进行内容移除、水印清除或瑕疵修复时,不少用户反馈修复后的图像出现明显的颜色偏移、色相异常、饱和度下降或灰蒙蒙的失真现象。这类问题并非模型本身崩溃或报错,而是…

作者头像 李华