如何将pdf转换为可文本搜索的pdf?


20

我有许多pdf扫描的文档,我希望能够搜索它们。我怎样才能做到这一点?

本质上,我必须对PDF进行OCR,然后将提取的文本混合回新的pdf中。我尝试了许多不同的解决方案(包括将OCR信息添加到PDF中找到的解决方案)未成功。

  1. pdfocr(给我这个问题:https : //github.com/gkovacs/pdfocr/issues/7
  2. pdfsandwich(软件中心表示它是一个较差的软件包,我不应该安装它)
  3. OCRfeeder(在软件中心)可以很好地导出到odt,但是在导出为pdf时不起作用。
  4. Gscan2pdf导出本讨论中报告的全黑(但可搜索)图像。
  5. 我认为Pdfxchange查看器无法处理超过500页的文件的ocr。

是否有我不知道的软件包?或执行此操作的脚本?


3
我自己还没有尝试过,但是过去我推荐过这个项目
谷氨酰胺

我刚写pdf2searchablepdf。它依靠tesseract。它运作良好。超级好用。看这里。askubuntu.com/a/1187881/327339
Gabriel Staples

Answers:


12

Ubuntu <16.04

根据谷氨酰胺的评论,我找到了一个可行的解决方案。它是OCRmyPDF脚本

git clone https://github.com/jbarlow83/OCRmyPDF
cd OCRmyPDF
sh ./OCRmyPDF.sh -h  # to see the usage

如果收到消息说您应该并行安装GNU。可以(在/ubuntu//a/298598/115155之后)完成(第二行是可选的,具体取决于您的口味和版本):

sudo apt-get install parallel
sudo rm /etc/parallel/config

最后,您可以使用以下命令OCR您的pdf:

sh ./OCRmyPDF.sh input.pdf output.pdf  # change input and output to the files you want

如果该命令似乎没有响应,则可以使用该-v标志(可以用作-vv或递增使用)来增加详细程度-vvv。最好先在较短的pdf上测试结果。您可以按以下方式缩短pdf:

pdftk A=input.pdf cat A1-5 output output.pdf

Ubuntu> = 16.04

从Ubuntu 16.04开始,OCTmyPDF已通过apt提供。赶紧跑

sudo apt install ocrmypdf
ocrmypdf -h   # to see the usage

最后,您可以使用以下命令OCR您的pdf:

ocrmypdf input.pdf output.pdf  # change input and output to the files you want

如果该命令似乎没有响应,则可以使用该-v标志(可以用作-vv或递增使用)来增加详细程度-vvv。最好先在较短的pdf上测试结果。您可以按以下方式缩短pdf:

pdftk A=input.pdf cat A1-5 output output.pdf

如果您有任何疑问,请查看新的Github Repo


您会接受答案来解决它吗(这样它就不会出现在未答复的列表中)
注册用户

sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDF适用于Ubuntu 16.04
Martin Thoma

1
对于Ubuntu 16.10及更高版本,您可以执行sudo apt install ocrmypdf
endlith '18

6

@ don.joey用ocrmypdf脚本回答。但是,它可以立即安装(从16.10开始)。

sudo apt install ocrmypdf

然后,您必须安装所需的tesseract语言。

要列出系统中已经存在的语言,请输入:

tesseract --list-langs

如果您错过了一个,请安装它。例如,

sudo apt install tesseract-ocr-spa

现在,您可以使用以下命令生成可搜索的PDF(其质量会有所不同,具体取决于扫描的文档)

ocrmypdf -l 'spa' old.pdf new.pdf

当然,您可以检查其手册页以获取其他选项。


先生,请给我投票!
don.joey

4

pdfsandwich正是执行这项工作。我不知道软件中心提供了一个软件包,但我正在项目网站上为其提供Ubuntu deb软件包(有关详细信息,请参见http://www.tobias-elze.de/pdfsandwich/),包括当前最新版本(0.1.2),目前尚不可能在任何软件中心中使用。

如果您有扫描的文件scanned_file.pdf,只需致电

pdfsandwich scanned_file.pdf

生成scanned_file_ocr.pdf带有识别文本并添加到扫描页面的文件。

与大多数现有解决方案相比,它可以自动检测已安装的tesseract版本并相应地调整其行为。另外,它在OCR处理之前执行扫描图像的预处理,例如去歪斜或去除黑边等,这可以大大改善光学字符识别。

免责声明:我是的开发者pdfsandwich,因此有很大的偏见。


听起来不错,但是为什么在Ubuntu 16.04上使用apt-get安装的pdfsandwich版本0.1.4将每个字符转换成黑色矩形?
Valentas '16

1
没有更多细节,很难回答。首先,我建议使用该工具的最新版本。当前版本是0.1.6。您可以在网站上找到Ubuntu的deb软件包。其次,如果这样做没有帮助,则可能需要使用-verbose选项来获取更多详细信息,并使用这些详细信息来提交错误报告。
Tobias Elze

对我来说有两个问题。转换:尝试执行安全策略“ PDF”不允许的操作@ error / constitute.c / IsCoderAuthorized / 408。因此,我必须从从imagemagick.org/script/install-source.php下载的源安装imagemagick, 然后在加载共享库时出错:libMagickCore-7.Q16HDRI.so.6:无法打开共享库文件:文件或目录”,此解决方案通过运行'sudo ldconfig / usr / local / lib'工作,imagemagick版本是'identify -version'获得的7.0.8-56。
pierrely

如果您打算操纵或修整pdf,则可能值得添加这些实用程序。1. pdfshuffler拆分左右页面(共2面原稿)2. pdftk pdf链使用pdftk(作为jar文件)分别将文件拆分为偶数和奇数页:4修剪页面pdfquench-我还需要gir1。 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2。pdfsandwich可以有效处理,文件大小也减少了10倍。谢谢。Ubuntu 19.04也使用pdfsam进行拆分和合并,下载后作为Java jar文件运行
Pierrely

0

OCRfeeder中存在一个错误

/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py

第436行应显示为:

            lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
#            lines = '\n'.split(asUnicode(stuff).strip())

改变了它,对我有用


0

操作系统:Ubuntu 18.04

首先,安装tesseract-ocr

apt-cache show tesseract-ocr
sudo apt-get update && sudo apt-get upgrade
apt-get install tesseract-ocr --print-uris
apt-get install tesseract-ocr
sudo !!

如果要在tesseract中使用英语以外的语言,则必须安装相应的laguage软件包。例如对于葡萄牙语,您将需要执行以下操作:

sudo apt-get install tesseract-ocr-por

否则,您将得到错误:

Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/por.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your 
"tessdata" directory.
Failed loading language 'por'
Tesseract couldn't load any languages!
Could not initialize tesseract.

如果您使用Google“ tesseract PDF”,则可能会发现此帖子有些过时。但是,它为您提供了一些有用的提示。您首先必须将.pdf文件转换为一个文件.tiff。跑:

convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff

如果像过时的帖子中那样忘记添加alpha -Off,则会出现以下错误:

Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
Error in pixReadFromTiffStream: spp not in set {1,3,4}

现在,您可以运行最终命令。在您的原始PDF是葡萄牙语的特殊情况下,您将需要以下命令:

tesseract -l por newfile.tiff output pdf 

生成的文件将命名为output.pdf。例如,如果您的PDF是法语的,则在安装相应的之后tesseract-ocr-fra,将运行:

tesseract -l fra newfile.tiff output pdf 

所需的文件将再次是output.pdf


0

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

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

安装和使用说明pdf2searchablepdf

已于2019年11月11日在Ubuntu 18.04上测试。

安装:

git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
./PDF2SearchablePDF/install.sh
sudo apt update
sudo apt install tesseract-ocr

采用:

pdf2searchablepdf mypdf.pdf

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

做完了 包装器没有python依赖项,因为它目前完全用bash编写。

参考或相关资源:

  1. PDF2SearchablePDFhttps//github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. 如何将pdf转换为可文本搜索的pdf?
  3. 最好,最简单的OCR解决方案是什么?
  4. 从PDF提取嵌入式图像
  5. pdfsandwich:我刚刚发现的替代软件包装器,也值得一试!http://www.tobias-elze.de/pdfsandwich/
  6. /unix/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
  7. [如何使用PDF将PDF转换为一堆图像pdftoppm] 从PDF中提取嵌入的图像
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.