关于 ocrmypdf
这是一份使用 OCRmyPDF 为扫描 PDF 添加可搜索文本的命令行技能指南,涵盖语言选择、OCR 模式、页码范围和输出类型。还介绍伴随文本、元数据设置及并行处理。
主要功能
- 01为 PDF 添加可搜索的 OCR 文本
- 02将图像处理为可搜索 PDF
- 03选择语言和 OCR 模式
- 04仅处理指定页面
- 05导出伴随文本并设置元数据
- 06并行运行任务
适用场景
- 01让扫描档案可搜索
- 02识别多语言文档
- 03替换现有 OCR 文本层
- 04创建 PDF/A 归档文件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ full-stack-skills/ ocrmypdf-skills --skill ocrmypdf安装后在 Claude Code 中输入/ocrmypdf确认已加载。
附带文件agents/openai.yaml
详细介绍
OCRmyPDF — 核心 OCR 指南
概述
OCRmyPDF 会为扫描版 PDF 文件添加 OCR 文本层,使其可以搜索或复制粘贴。它使用 Tesseract OCR,支持 100 多种语言,默认生成 PDF/A,并将任务分配到所有 CPU 核心。
有关图像处理(倾斜校正、旋转、清理),请参阅 ocrmypdf-image 技能。有关优化和 PDF/A 选项,请参阅 ocrmypdf-optimize。有关批处理、Docker 和脚本编写,请参阅 ocrmypdf-batch。有关 Python API 和插件,请参阅 ocrmypdf-api。
安装
一行命令安装(推荐)
| 操作系统 | 命令 |
|---|---|
| Debian / Ubuntu | apt install ocrmypdf |
| Fedora | dnf install ocrmypdf tesseract-osd |
| macOS (Homebrew) | brew install ocrmypdf |
| macOS (MacPorts) | port install ocrmypdf |
| FreeBSD | pkg install py-ocrmypdf |
| Snap | snap install ocrmypdf |
使用 pip 安装(最新版本)
# After installing system dependencies (Tesseract, Ghostscript)
pip install ocrmypdf
验证
ocrmypdf --version
ocrmypdf --help
依赖要求
- Python 3.11+
- Tesseract 4.1.1+(OCR 引擎)
- Ghostscript 9.54+ 或 pypdfium2(PDF 光栅化)
- 可选:jbig2enc(压缩)、pngquant(图像优化)、unpaper(清理)
快速开始
# Basic OCR — input scanned PDF, output searchable PDF/A
ocrmypdf input.pdf output.pdf
# OCR an image file directly
ocrmypdf --image-dpi 300 scan.png output.pdf
# OCR in place (only overwrites on success)
ocrmypdf myfile.pdf myfile.pdf
语言支持
OCRmyPDF 使用 Tesseract 语言包。请为你的操作系统安装语言包:
# Debian / Ubuntu
apt-cache search tesseract-ocr # List all language packs
apt install tesseract-ocr-chi-sim # Chinese Simplified
apt install tesseract-ocr-fra # French
# macOS (Homebrew)
brew install tesseract-lang # All languages
# Fedora
dnf search tesseract-langpack
dnf install tesseract-langpack-ita # Italian
使用语言
# Single language
ocrmypdf -l fra document.pdf output.pdf
# Multiple languages
ocrmypdf -l eng+fra bilingual.pdf output.pdf
# Chinese Simplified + English
ocrmypdf -l chi_sim+eng chinese-doc.pdf output.pdf
注意:语言标识符请使用 ISO 639-3 代码。
OCR 模式
默认模式(跳过已有文本)
# Skip pages that already have text — only OCR pages without text
ocrmypdf input.pdf output.pdf
强制 OCR(--force-ocr 或 -m force)
# Rasterize and OCR all pages, even those with existing text
ocrmypdf --force-ocr input.pdf output.pdf
# v17+ short form:
ocrmypdf -m force input.pdf output.pdf
重新进行 OCR(--redo-ocr 或 -m redo)
# Replace existing OCR without rasterizing (preserves quality)
ocrmypdf --redo-ocr input.pdf output.pdf
# v17+ short form:
ocrmypdf -m redo input.pdf output.pdf
跳过文本(--skip-text 或 -m skip)
# Skip pages with any text, only OCR blank/image pages
ocrmypdf --skip-text input.pdf output.pdf
# v17+ short form:
ocrmypdf -m skip input.pdf output.pdf
不进行 OCR(仅处理图像)
# Apply image processing / PDF/A conversion without OCR
ocrmypdf --ocr-engine none input.pdf output.pdf
页面选择
# OCR only specific pages
ocrmypdf --pages 1,3,5-10 input.pdf output.pdf
# OCR only the first page, minimal changes elsewhere
ocrmypdf --pages 1 --output-type pdf --optimize 0 input.pdf output.pdf
输出类型
# PDF/A (default) — for archival
ocrmypdf --output-type pdfa input.pdf output.pdf
# Standard PDF
ocrmypdf --output-type pdf input.pdf output.pdf
# Auto (v17+) — speculative PDF/A, falls back to standard PDF
ocrmypdf --output-type auto input.pdf output.pdf
# No output PDF — only produce sidecar text
ocrmypdf --output-type none --sidecar text.txt input.pdf -
旁注文本文件
# Produce a companion text file with OCR text
ocrmypdf --sidecar output.txt input.pdf output.pdf
元数据
# Set output PDF metadata
ocrmypdf --title "My Document" --author "Author Name" --subject "Subject" input.pdf output.pdf
并行处理
# Use 4 CPU cores (default: all available)
ocrmypdf --jobs 4 input.pdf output.pdf
# Single-threaded
ocrmypdf --jobs 1 input.pdf output.pdf
常用示例
使扫描版 PDF 可搜索
ocrmypdf scanned.pdf searchable.pdf
将图像转换为可搜索的 PDF
ocrmypdf --image-dpi 300 scan.jpg output.pdf
对多语言文档进行 OCR
ocrmypdf -l eng+deu+fra multilingual.pdf output.pdf
使用较新版本的 Tesseract 重新进行 OCR
ocrmypdf --redo-ocr old-ocr.pdf updated.pdf
清除 PDF 中的所有文本/OCR
ocrmypdf --ocr-engine none --force-ocr input.pdf stripped.pdf
快速参考
| 任务 | 命令 |
|---|---|
| 基本 OCR | ocrmypdf input.pdf output.pdf |
| 指定语言 | ocrmypdf -l fra input.pdf output.pdf |
| 多种语言 | ocrmypdf -l eng+fra input.pdf output.pdf |
| 对所有页面强制重新进行 OCR | ocrmypdf --force-ocr input.pdf output.pdf |
| 替换现有 OCR | ocrmypdf --redo-ocr input.pdf output.pdf |
| 跳过含有文本的页面 | ocrmypdf --skip-text input.pdf output.pdf |
| 仅处理指定页面 | ocrmypdf --pages 1,3,5-10 input.pdf output.pdf |
| 输出标准 PDF | ocrmypdf --output-type pdf input.pdf output.pdf |
| 提取旁注文本 | ocrmypdf --sidecar text.txt input.pdf output.pdf |
| 图像转 PDF | ocrmypdf --image-dpi 300 image.png output.pdf |
| 原地进行 OCR | ocrmypdf myfile.pdf myfile.pdf |
| 设置元数据 | ocrmypdf --title "Title" input.pdf output.pdf |
| 并行任务 | ocrmypdf --jobs 4 input.pdf output.pdf |
故障排除
- “找不到 Tesseract”:安装 Tesseract,并确保它位于 PATH 中。
- OCR 质量差:检查语言包(
-l),尝试使用--deskew(请参阅 ocrmypdf-image)或--oversample 300。 - “输入文件含有文本”:根据情况使用
--force-ocr、--redo-ocr或--skip-text。 - 输出文件过大:有关
--optimize级别和 JBIG2,请参阅 ocrmypdf-optimize。 - 已签名的 PDF:使用
--invalidate-digital-signatures覆盖限制(签名将失效)。
参考资料
评论
支持 Markdown