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

don*_*oey 27 pdf software-recommendation ocr

我有许多 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。

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

don*_*oey 21

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

sudo apt install ocrmypdf
ocrmypdf -h   # to see the usage
Run Code Online (Sandbox Code Playgroud)

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

ocrmypdf input.pdf output.pdf  # change input and output to the files you want
Run Code Online (Sandbox Code Playgroud)

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

pdftk A=input.pdf cat A1-5 output output.pdf
Run Code Online (Sandbox Code Playgroud)

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

  • 对于 Ubuntu 16.10 及更高版本,您只需执行 `sudo apt install ocrmypdf`。 (2认同)

Lud*_*cus 9

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

sudo apt install ocrmypdf
Run Code Online (Sandbox Code Playgroud)

然后你必须安装你需要的tesseract语言。

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

tesseract --list-langs
Run Code Online (Sandbox Code Playgroud)

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

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

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

ocrmypdf -l 'spa' old.pdf new.pdf
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

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

pdfsandwich scanned_file.pdf
Run Code Online (Sandbox Code Playgroud)

它会生成文件scanned_file_ocr.pdf,并将已识别的文本添加到扫描的页面中。

与大多数现有解决方案相比,它会自动检测安装的超立方体版本并相应地调整其行为。此外,它在 OCR 处理之前对扫描图像进行预处理,例如去偏或去除暗边缘等,这可以显着提高光学字符识别。

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