我有许多 PDF 格式的扫描文档,我想搜索它们。我该怎么做?
本质上我必须对 PDF 进行 OCR,然后将提取的文本重新混合到新的 PDF 中。我尝试了许多不同的解决方案(包括在将 OCR 信息添加到 PDF)。
- pdfocr(这给了我这个问题:https://github.com/gkovacs/pdfocr/issues/7)
- pdfsandwich(其中软件中心说这是一个劣质软件包,我不应该安装它)
- OCRfeeder(在软件中心)可以很好地导出到 odt,但导出到 pdf 时没有反应。
- Gscan2pdf导出全黑(但可搜索)的图像,如报告所示在这次讨论中。
- 我认为 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
。