如何对 PDF 文件进行 OCR 并获取存储在 PDF 中的文本?

ing*_*gli 49 command-line ocr pdf

首先,如果之前有人问过这个问题,我深表歉意——我在现有的帖子中搜索了一段时间,但找不到支持。

我对 Fedora 对多页不可搜索 PDF 进行 OCR 并将此 PDF 转换为包含图像顶部文本层的新 PDF 文件的解决方案感兴趣。在 Mac OSX 或 Windows 上,我们可以使用 Adob​​e Acrobat,但在 Linux 上有没有解决方案,特别是在 Fedora 上?

似乎描述了一个解决方案 - 但不幸的是,我在检索精确图像时已经迷路了。

Edu*_*scu 53

最好和最简单的方法是使用,pypdfocr因为它不会更改 pdf。pypdfocr 是这里的 python 模块链接。

pypdfocr your_document.pdf
Run Code Online (Sandbox Code Playgroud)

最后,您将获得另your_document_ocr.pdf一种您想要的带有可搜索文本的方式。该应用程序不会改变图像的质量。通过添加覆盖文本稍微增加文件的大小。

我认为该命令非常简单,不需要任何 GUI。也许安装 pypdfocr 有点冗长:

sudo dnf -y install tesseract 
pip install pypdfocr 
Run Code Online (Sandbox Code Playgroud)

2018 年 11 月 3 日更新:

pypdfocr自 2016 年起不再受支持,由于未维护,我注意到了一些问题。ocrmypdf( module ) 做类似的工作,可以这样使用:

ocrmypdf in.pdf out.pdf
Run Code Online (Sandbox Code Playgroud)

安装:

pip install ocrmypdf
Run Code Online (Sandbox Code Playgroud)

或者

sudo apt install ocrmypdf #ubuntu
sudo dnf -y install ocrmypdf #fedora
Run Code Online (Sandbox Code Playgroud)

  • 在 Fedora 30 上使用了 `ocrmypdf`(通过 `dnf install`) - 效果很好。 (5认同)
  • OCRmyPDF 对我来说也像做梦一样。它在底层基于 Tesseract,因此(除其他外)可以很好地处理 [多种语言](https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html):我只是将它用于混合英语和格鲁吉亚语 (ქართული ენა) 的文档,并获得了近乎完美的结果。 (4认同)
  • 非常好谢谢。与此线程中提出的其他 ocr 不同,此 ocr 提供的输出仅比原始(图像 pdf)大 _slighlty 大_。如果它可以提供输出_更小_(仅文本),那就更好了:这可能吗? (2认同)

ing*_*gli 16

在了解到Tesseract现在也可以生成可搜索的 PDF 后,我找到了脚本三明治:http : //www.tobias-elze.de/pdfsandwich/

安装依赖项后(这可能不是完整列表)

sudo dnf install svn ocaml unpaper tesseract
Run Code Online (Sandbox Code Playgroud)

我按照脚本的指南从源代码编译

从源代码编译

pdfsandwich 是开源软件(许可证:GPL)。您可以从项目网站上的下载区域下载 .tar.bz2 包形式的源代码,也可以通过 subversion 查看它们:

svn checkout svn://svn.code.sf.net/p/pdfsandwich/code/trunk/src pdfsandwich
Run Code Online (Sandbox Code Playgroud)

如果你的系统上安装了OCaml,你可以编译安装如下:

cd pdfsandwich
./configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

这现在允许我运行

sandwich multipaged-non-searchable.pdf
Run Code Online (Sandbox Code Playgroud)

生成可搜索的 PDF。

是包含 pdfsandwich 的存储库列表(例如,Debian Stable、AUR、Homebrew)。

  • FWIW:pdfsandwich 也可以在 Ubuntu 的 apt 包存储库中找到。其他发行版也可能有它。 (2认同)

小智 7

Ubuntu 中提供的一个简单工具是“ocrfeeder”,它允许生成带有 OCR 文本覆盖在原始文档上的 PDF。它利用 Tesseract 加上其他 OCR 引擎(不确定是哪个)并提供图像旋转/“无纸化”等。


Gab*_*les 5

我有同样的问题,所以我在周末写了这个。试一试; 效果很好!它是一个简单的包装器tesseract。它用于pdftoppm将 PDF 转换为一堆 TIFF 文件,然后用于tesseract对它们执行 OCR(光学字符识别)并生成可搜索的 PDF 作为输出。脚本完成后,所有中间临时文件都会自动删除。

源代码:https : //github.com/ElectricRCAAircraftGuy/PDF2SearchablePDF

安装和使用说明pdf2searchablepdf

2019 年 11 月 11 日在Ubuntu 18.04和2020年 11 月Ubuntu 20.04上进行了测试。

安装:

git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
./PDF2SearchablePDF/install.sh

sudo apt update
sudo apt install tesseract-ocr
Run Code Online (Sandbox Code Playgroud)

用:

# General:
pdf2searchablepdf [options] <input.pdf|dir_of_imgs> [lang]

# Make a PDF searchable:
pdf2searchablepdf mypdf.pdf

# Make an entire directory of images into a single searchable PDF:
pdf2searchablepdf directory_of_imgs
Run Code Online (Sandbox Code Playgroud)

您现在将拥有一个名为mypdf_searchable.pdf的 pdf ,其中包含可搜索的文本!

完毕。它没有 python 依赖项,因为它目前完全用 bash 编写。

有关pdf2searchablepdf -h帮助菜单以及更多选项和示例的信息,请参见。

参考资料或相关资源:

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. https://askubuntu.com/questions/473843/how-to-turn-a-pdf-into-a-text-searchable-pdf/1187881#1187881
  3. https://askubuntu.com/questions/16268/whats-the-best-simplest-ocr-solution
  4. https://askubuntu.com/questions/150100/extracting-embedded-images-from-a-pdf/1187844#1187844
  5. pdfsandwich:我刚刚发现的替代软件包装器,也值得一试!http://www.tobias-elze.de/pdfsandwich/