在Windows Python中将不可搜索的Pdf转换为可搜索的Pdf

时间:2018-08-21 12:57:32

标签: python python-3.x pdf ocr

需要一种解决方案,将每个页面均为图像并且页面可以包含文本,表格或两者的组合的PDF文件转换为可搜索的pdf。

我使用的ABBY FineReader Online可以很好地完成这项工作,但是我正在寻找可以通过 Windows Python

实现的解决方案

我已经进行了详细的分析,下面是与我想要的内容接近但并不完全相同的链接:

Scanned Image/PDF to Searchable Image/PDF

告诉您使用Ghost脚本将其1st转换为图像,然后将其直接转换为文本。我认为tesseract无法将不可搜索的PDF转换为可搜索的PDF。

Converting searchable PDF to a non-searchable PDF

上述解决方案有助于逆向转换,即将可搜索的内容转换为不可搜索的内容。我也认为这些在Ubuntu / Linux / MacOS中是有效的。

有人可以帮助说明在 Windows Python 中实现不可搜索到可搜索的Python代码是什么吗?


更新1

我用Asprise Web Ocr获得了理想的结果。以下是链接和代码:

https://asprise.com/royalty-free-library/python-ocr-api-overview.html

我正在寻找只能通过Windows Python库完成的解决方案

  1. 将来无需支付订阅费用
  2. 我每天需要转换成千上万个文档,将一个文档上载到API然后下载等会很麻烦。

更新2

我知道将不可搜索的pdf直接转换为文本的解决方案。但是我正在寻找他们将不可搜索的PDF转换为可搜索的PDF的任何方法。我有使用PyPDF2将PDF转换为文本的代码。

4 个答案:

答案 0 :(得分:5)

那么您实际上并不需要将pdf内的所有内容都转换为文本。文本将保留为文本,表格将保留为表,如果可能,图像应成为文本。 您需要一个脚本,该脚本实际上按原样读取pdf,然后开始在块上进行转换。该脚本将编写文本块,直到文档被完全阅读为止,然后将其转换为pdf。像

if line_is_text():
    write_the_line_as_is()
elif line_is_img():
    transform_img_in_text()# comments below code
...
..
.

现在transform_img_in_text()我认为可以使用许多外部库来完成,您可以使用的库可以是:

Tesseract OCR Python

您可以通过pip下载此库,如上面链接中所述。

答案 1 :(得分:4)

我过去曾经使用pypdfocr来做到这一点。但是,它最近尚未更新。

自述文件:

pypdfocr filename.pdf
--> filename_ocr.pdf will be generated

仔细阅读Windows的安装说明。

最新的Python库是OCRmyPDF:https://github.com/jbarlow83/OCRmyPDF有一个适用于Windows的Docker映像

答案 2 :(得分:4)

如果您可以接受online ocr解决方案,那么OCR.space提供的免费OCR API也可以create searchable PDFs并且运行良好。

在免费版本中,创建的PDF包含水印。要删除水印,您需要升级到其商业PRO计划。您可以使用首页上的网络表单来测试api。

OCR.space也可以作为非订阅的本地选项使用,但是我不确定价格。我个人使用免费的ocr api取得了成功。

答案 3 :(得分:1)

我最近写了一篇博客文章,其中我使用了以下内容:

  • OCRmyPDF-包装Tesseract的python库
  • 在Azure中运行的docker容器

您可能需要进行调整以满足您的需求,但是我相信本文中的构建基块可以适用于您的需求:

http://martyice.github.io/docker-in-azure/