当 PDF 成了“拦路虎”

又是一个被文档支配的夜晚。小张盯着 300 页的技术手册发愁——导师要建知识库,可这玩意儿比字典还厚,怎么提取文字成了难题。

试了几个在线 OCR,不是限制页数、让你充值会员,就是上传失败、转一半卡死。PDF 页面太多太大,传统 OCR 工具常常直接崩溃。

面对“刺头”文档,是时候换个思路了。

“化整为零”处理大 PDF

doc-to-text 的解决方案是:不要试图一次性处理整个 PDF,而是将其拆分为单页,逐页识别,再合并为完整文本。

处理流程概括如下:

大型 PDF → 拆解成单页 → 每页 OCR → 合并输出

这样做有以下优势:

  • 每页独立处理,单页失败不会影响整体
  • 支持断点续传,意外中断可继续处理
  • 内存占用低,适合处理上百页文档
  • 可适应不同尺寸和复杂排版的页面

无论是工作报告、技术手册,还是电子图书,都可以逐页拆解、分批“吃下”。

分页处理机制

  • 如果 PDF 内容为图像(默认,可通过 --content-type image 明确指定),则自动分页,将 PDF 拆解为单页图像,再用 OCR 工具逐页识别,适合扫描件或图片型 PDF。
  • 如果 PDF 内容为文字(通过 --content-type text 指定),则不分页,直接用 Calibre 提取和转换文本,适合原生文字型 PDF。

两种 OCR 引擎灵活选择

doc-to-text 目前支持两种 OCR 方式,可按需选择:

  • surya-ocr:本地运行的 OCR 模型,支持中英文等多种语言,结构清晰的文档识别效果好。适合注重数据隐私、希望离线处理的用户。对电脑配置有要求,处理速度取决于本地性能。
  • llm-caller:调用外部 AI 模型,如阿里云 qwen-vl-ocr,识别能力强,能处理手写、复杂排版等,推荐用于扫描件和难啃文档。不受本地配置影响,但需注册服务并配置 API Key。

安装与环境准备指南

推荐使用 amo 工具,可以更方便地安装 doc-to-text 及其依赖。

首先安装 amo 工具

选择您的平台并运行安装命令:

🐧 Linux / 🍎 macOS 系统:

curl -fsSL https://cli.release.amo.run/install.sh | sh

或者,使用 🍺 Homebrew 安装

brew tap amo-run/amo && brew install amo

🪟 Windows 系统:

PowerShell (推荐):

iex ((New-Object System.Net.WebClient).DownloadString('https://cli.release.amo.run/install.ps1'))

命令提示符:

curl -fsSL https://cli.release.amo.run/install.bat -o install.bat && install.bat

检查 amo 工具是否安装成功:

amo --version

安装 doc-to-text 及相关文档处理工具

amo tool install doc-to-text
amo tool install ghostscript
amo tool install pandoc
# 可选(根据需要安装)
amo tool install calibre
amo tool install llm-caller

验证安装是否成功

# 验证主程序
doc-to-text --version

# 验证系统依赖
ghostscript --version
pandoc --version
# 若安装了 Calibre(可选)
calibre --version

# 验证 OCR 引擎(根据选择的方案)
surya_ocr --version
# 或
llm-caller --version

全部显示正常后,你就可以开始使用 doc-to-text 了!


快速上手指南

Step 1:基本用法

新手模式(自动引导):

doc-to-text 文件.pdf

指定 OCR 引擎 + 明确内容类型:

doc-to-text 文件.pdf --ocr surya_ocr --content-type image

批量处理文件夹中所有 PDF:

for file in *.pdf; do
  doc-to-text "$file" --ocr surya_ocr
done

Step 2:进阶技巧与参数

# 显示详细进度
doc-to-text 文档.pdf --ocr surya_ocr --verbose

# 指定输出路径
doc-to-text 文档.pdf --ocr surya_ocr -o ./输出/内容.txt

# 强制使用文本提取(适用于文字型PDF)
doc-to-text 文档.pdf --content-type text

Step 3:调用大模型识别复杂扫描文档

调用大模型识别复杂扫描文档:

下载模板:

# 下载模板
llm-caller template download https://github.com/nodewee/llm-calling-templates/blob/main/qwen-vl-ocr-image.json

准备 API KEY 配置文件:

首先,获取阿里云 API Key:https://bailian.console.aliyun.com/?tab=model#/api-key

然后创建配置文件,示例文件:sample-api-keys.json,内容如下:

{
  "aliyun_api_key": "sk-xxx"
} 

将其中 aliyun_api_key 替换为您的阿里云 API Key,然后执行以下命令:

llm-caller config secret_file sample-api-keys.json

配置完成后,调用大模型识别复杂扫描文档:

doc-to-text 扫描件.pdf --ocr llm-caller --llm-template qwen-vl-ocr-image

常见问题解答(FAQ)

Q1:PDF 是纯文字的,还需要 OCR 吗?
A:不需要,直接用 --content-type text,提取速度快且准确。

Q2:OCR 出现乱码怎么办?
A:可尝试更换 OCR 引擎,或检查是否为手写/低分辨率图像。推荐 llm-caller 配合大模型。

Q3:出现“找不到 ghostscript/pandoc”?
A:请确认它们已正确安装并添加到系统环境变量(PATH)中。

Q4:能否指定某几页进行识别?
A:当前暂不支持指定页码,但可先用 pdftkqpdf 拆分 PDF,再单独识别。


写在最后

doc-to-text 用“拆页 + OCR”的思路,让处理大体量 PDF 不再是难题:

  • ⬇️ 没有页数限制
  • 💻 本地运行不上传
  • 🤖 可调用 AI 模型辅助识别

无论是几百页的项目资料,还是结构混乱的扫描手稿,它都能帮你有条不紊地“吃下”。

现在就试试,将繁重任务交给自动化工具,把时间留给真正重要的创造与思考。


📬 关注「缓坡漫步」,解锁更多工作流与自动化技巧,让技术为你省下每一分精力。


推广:
阿里云百炼大模型 9折优惠 + 所有模型各百万免费Token →
即梦 免费AI画图、生成视频。每日领免费额度,可累加 →