当前位置: 首页 > 知识库问答 >
问题:

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

柳培
2023-03-14

需要一个解决方案来转换PDF文件,其中每个页面都是图像,页面可以包含文本,表格或两者的组合到可搜索的pdf。

我使用了ABBY FineReader Online,这项工作做得非常好,但我正在寻找一个可以通过Windows Python实现的解决方案

我已经做了详细的分析,下面的链接接近我想要的,但并不准确:

扫描图像/PDF到可搜索图像/PDF

它告诉我们首先要使用Ghost脚本将其转换为图像,然后直接转换为文本。我不相信tesseract会将不可搜索的PDF转换为可搜索的PDF。

将可搜索的PDF转换为不可搜索的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。我有使用PyPDF2将PDF转换为文本的代码。

共有3个答案

温翔宇
2023-03-14

我最近写了一篇博客文章,我用以下方法完成了这一点:

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

你可能需要调整一些东西来满足你的需求,但我相信本文中的构建模块可以应用于你的需求:

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

归泽宇
2023-03-14

我以前用pypdfocr来做这个。不过最近还没有更新。

自述文件:

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

请仔细阅读Windows的安装说明。

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

卫弘懿
2023-03-14

实际上,你不需要将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下载这个库,上面的链接提供了说明。

 类似资料:
  • 我有一堆pdf文件,有些是可搜索的常规pdf文件,有些是不可搜索的文件的扫描版本。我想提取每个pdf的内容。为了提取常规PDF的内容,我使用Apache Tika,为了从不可搜索的PDF中提取内容,我使用tesseract ocr。然而,我需要区分哪个pdf是nornal pdf,哪个不是。有办法吗?

  • 我想皈依*。可搜索的PDF文件*。使用alfresco和tesseract OCR的PDF文件。 tesseract版本3.03需要编译,我需要使用源代码生成设置。有没有其他解决办法。有人能帮忙吗?

  • 我想将扫描的pdf文件转换为文本可搜索的pdf文件。我想给一个输入扫描的PDF然后我的预期输出是可搜索的PDF。 很少有工具可以将扫描的pdf文件中的文本作为输出,但我希望可以搜索文本的pdf文件作为输出,而不仅仅是文本。 我在这里搜索了一下,找到了一个解决方案,但我的生产服务器是amazon centos,这个工具的安装只适用于ubuntu,不适用于amazon centos。 如果需要,我准备

  • 我有一个使用spring数据elasticsearch库的项目。我的系统返回了结果,但我想知道如何以域POJO类的形式获得结果。 我没有看到太多关于如何实现这一点的文档,但我不知道应该在谷歌上搜索什么正确的问题。 目前,我的代码是这样的,在我的测试中,它检索正确的结果,但不是作为POJO。 非常感谢您的帮助。

  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • 我正在尝试为我的portlet创建一个搜索表单。portlet是一个地址簿应用程序,所有dao和服务都是使用service builder构建的。我想为用户提供一个基本/高级搜索表单(与liferay上的其他表单一样,例如control center中的“用户和组织”)。 我已经实现了所有的逻辑和页面,查看了Lifeay源代码(6.1 GA1),但搜索表单没有以任何方式显示,我将把代码放在这里。