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

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

我有许多 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 Viewer 无法对超过 500 页的文件进行即时 OCR 处理。

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

答案1

从 Ubuntu 16.04 开始,OCRmyPDF 已可通过 apt 获得。只需运行

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

最后,你可以使用以下命令对你的 PDF 进行 OCR:

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 仓库

答案2

@don.joey 回答说ocrmypdf脚本。但是,现在可以直接安装(从 16.10 开始)。

sudo apt install ocrmypdf

然后你必须安装立方体您需要的语言。

要列出系统中已有的语言,请输入:

tesseract --list-langs

如果你错过了,请安装它。例如,

sudo apt install tesseract-ocr-spa

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

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

当然,您可以查看其手册页来了解一些附加选项。

答案3

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,因此有严重的偏见。

答案4

操作系统: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 中使用英语以外的语言,则必须安装相应的语言包。例如,对于葡萄牙语,您需要执行以下操作:

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.

如果你谷歌搜索“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

相关内容