当 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:当前暂不支持指定页码,但可先用 pdftk
或 qpdf
拆分 PDF,再单独识别。
写在最后
doc-to-text 用“拆页 + OCR”的思路,让处理大体量 PDF 不再是难题:
- ⬇️ 没有页数限制
- 💻 本地运行不上传
- 🤖 可调用 AI 模型辅助识别
无论是几百页的项目资料,还是结构混乱的扫描手稿,它都能帮你有条不紊地“吃下”。
现在就试试,将繁重任务交给自动化工具,把时间留给真正重要的创造与思考。
📬 关注「缓坡漫步」,解锁更多工作流与自动化技巧,让技术为你省下每一分精力。