Skip to content

Latest commit

 

History

History
187 lines (128 loc) · 9.12 KB

File metadata and controls

187 lines (128 loc) · 9.12 KB

OCRmyPDF

构建状态 PyPI 版本 Homebrew 版本 ReadTheDocs Python 版本

OCRmyPDF 会为扫描版 PDF 文件添加 OCR 文本层,使其可以搜索或复制粘贴。

ocrmypdf                      # 它是一个可脚本化的命令行程序
   -l eng+fra                 # 它支持多种语言
   --rotate-pages             # 它可以修正旋转方向错误的页面
   --deskew                   # 它可以校正歪斜的 PDF!
   --title "My PDF"           # 它可以更改输出元数据
   --jobs 4                   # 它默认使用多个 CPU 核心
   --output-type pdfa         # 它默认生成 PDF/A
   input_scanned.pdf          # 接受 PDF 输入(或图像)
   output_searchable.pdf      # 生成经过验证的 PDF 输出

查看发布说明,了解最新变更详情

主要功能

  • 从普通 PDF 生成可搜索的 PDF/A 文件
  • 将 OCR 文本准确放置在图像下方,便于复制/粘贴
  • 保持原始嵌入图像的精确分辨率
  • 在可能时,以“无损”操作插入 OCR 信息,不干扰任何其他内容
  • 优化 PDF 图像,通常生成比输入文件更小的文件
  • 按需在执行 OCR 前校正和/或清理图像
  • 验证输入和输出文件
  • 在所有可用 CPU 核心间分配工作
  • 使用 Tesseract OCR 引擎识别超过 100 种语言
  • 保护你的私有数据。
  • 可以妥善扩展,处理包含数千页的文件。
  • 已在数百万份 PDF 上经过实战检验。

OCRmyPDF 在终端会话中的演示

详情请参阅文档

动机

我曾在网上寻找一款免费的命令行工具来对 PDF 文件执行 OCR:我找到了很多,但没有一个真正令人满意:

  • 要么生成的 PDF 文件中文本位于图像下方的错误位置(导致无法复制/粘贴)
  • 要么无法处理重音字符和多语言字符
  • 要么会改变嵌入图像的分辨率
  • 要么生成的 PDF 文件大得离谱
  • 要么在尝试 OCR 时崩溃
  • 要么无法生成有效的 PDF 文件
  • 除此之外,它们都不能生成 PDF/A 文件(专为长期存储设计的格式)

……所以我决定开发自己的工具。

安装

支持 Linux、Windows、macOS 和 FreeBSD。也提供 Docker 镜像,同时支持 x64 和 ARM。

操作系统 安装命令
Debian, Ubuntu apt install ocrmypdf
Windows Subsystem for Linux apt install ocrmypdf
Fedora dnf install ocrmypdf
macOS (Homebrew) brew install ocrmypdf
macOS (MacPorts) port install ocrmypdf
macOS (nix) nix-env -i ocrmypdf
LinuxBrew brew install ocrmypdf
FreeBSD pkg install py-ocrmypdf
OpenBSD pkg_add ocrmypdf
Ubuntu Snap snap install ocrmypdf

其他用户请参阅我们的文档了解安装步骤。

语言

OCRmyPDF 使用 Tesseract 执行 OCR,并依赖其语言包。对于 Linux 用户,通常可以找到提供语言包的软件包:

# Debian/Ubuntu 用户
apt-cache search tesseract-ocr # 显示所有 Tesseract 语言包列表
apt-get install tesseract-ocr-chi-sim  # 示例:安装简体中文语言包


# Arch Linux 用户
pacman -S tesseract-data-eng tesseract-data-deu # 示例:安装英语和德语语言包

# OpenBSD 用户
pkg_info -aQ tesseract  # 显示所有 Tesseract 语言包列表
pkg_add tesseract-cym  # 示例:安装威尔士语语言包

# brew macOS 用户
brew install tesseract-lang

# Fedora 用户
dnf search tesseract-langpack # 显示所有 Tesseract 语言包列表
dnf install tesseract-langpack-ita # 示例:安装意大利语语言包

随后可以向 OCRmyPDF 传递 -l LANG 参数,提示它应搜索哪些语言。可以同时请求多种语言。

OCRmyPDF 支持 Tesseract 4.1.1+。它会自动使用 PATH 环境变量中首先找到的版本。在 Windows 上,如果 PATH 中没有 Tesseract 二进制文件,我们会根据 Windows 注册表使用已安装的最高版本号。

文档和支持

安装 OCRmyPDF 后,可以通过以下命令访问内置帮助,了解命令语法和选项:

ocrmypdf --help

我们的文档托管在 Read the Docs 上

请在我们的 GitHub issues 页面报告问题,并遵循 issue 模板以便快速获得响应。

功能演示

# 添加 OCR 层并要求输出 PDF/A
ocrmypdf --output-type pdfa input.pdf output.pdf

# 将图像转换为单页 PDF
ocrmypdf input.jpg output.pdf

# 就地为文件添加 OCR(仅在成功时修改文件)
ocrmypdf myfile.pdf myfile.pdf

# 使用非英语语言执行 OCR(请查找对应语言的 ISO 639-3 代码)
ocrmypdf -l fra LeParisien.pdf LeParisien.pdf

# OCR 多语言文档
ocrmypdf -l eng+fra Bilingual-English-French.pdf Bilingual-English-French.pdf

# 校正歪斜页面
ocrmypdf --deskew input.pdf output.pdf

更多功能请参阅文档

要求

除所需的 Python 版本外,OCRmyPDF 还需要安装 Ghostscript 和 Tesseract OCR 这两个外部程序。OCRmyPDF 是纯 Python 项目,几乎可以在所有平台上运行:Linux、macOS、Windows 和 FreeBSD。

插件

OCRmyPDF 提供插件接口,允许扩展或替换其能力。以下是我们知道的一些插件:

  • OCRmyPDF-AppleOCR:用 Apple Vision Framework 替换标准 Tesseract OCR 引擎。需要 macOS。
  • OCRmyPDF-EasyOCR:用 EasyOCR 替换标准 Tesseract OCR 引擎;EasyOCR 是基于 PyTorch 的较新 OCR 引擎。强烈建议使用 GPU。
  • OCRmyPDF-PaddleOCR:用 PaddleOCR 替换标准 Tesseract OCR 引擎;PaddleOCR 是功能强大的 GPU 加速 OCR 引擎。

paperless-ngx 将 OCRmyPDF 集成到可搜索的文档管理系统中。

新闻与媒体

商务咨询

如果没有公司和用户选择支持功能开发与咨询服务,OCRmyPDF 不会成为今天的软件。无论是扩展现有功能集,还是将 OCRmyPDF 集成到更大的系统中,我们都很乐意讨论各类咨询需求。

许可证

OCRmyPDF 软件采用 Mozilla Public License 2.0 (MPL-2.0) 授权。该许可证允许将 OCRmyPDF 与其他代码集成,包括商业代码和闭源代码,但要求你发布对 OCRmyPDF 所做的源代码级修改。

OCRmyPDF 的某些组件采用其他许可证,具体由标准 SPDX 许可证标识符或 DEP5 版权与许可信息文件标明。一般来说,非核心代码采用 MIT 许可证,文档和测试文件采用 Creative Commons ShareAlike 4.0 (CC-BY-SA 4.0) 许可证。

免责声明

本软件按“原样”分发,不提供任何明示或暗示的保证或条件。