pdf2image如何使用“启用所有功能”阅读pdf-Windows

use*_*622 1 python pdf

我有一个pdf文件,我想用Python阅读。当我使用acrobat在计算机上打开它时,出现以下消息,当我单击“启用所有功能”时,该文件将显示其实际内容。 在此处输入图片说明 在此处输入图片说明

当我尝试在python中读取它时,如何实现相同的操作,以便python读取实际文本,而不读取以下文本

“请稍候...如果此消息最终没有被文档的正确内容取代,则您的PDF查看器可能无法显示这种类型的文档。您可以升级到适用于Windows®,Mac的Adobe Reader的最新版本,或通过访问http://www.adobe.com/go/reader_download_cn或Linux®来获得Adobe Reader的更多帮助,请访问http://www.adobe.com/go/acrreader_cn Windows是注册商标或商标Microsoft是位于美国和/或其他国家/地区的Microsoft Corporation的商标。Mac是Apple Inc.在美国和其他国家/地区的注册商标。Linux是Linus Torvalds在美国和其他国家/地区的注册商标。

我的代码如下

from PIL import Image
import pytesseract

homepath = r'C:\Users\xxxx\\'


files = "bbbb.pdf"
PDFfilename = homepath  + files

from pdf2image import convert_from_path
pages = convert_from_path(PDFfilename, 500)

i=1
for page in pages:
    page.save(homepath +'out'+str(i)+'.jpg', 'JPEG')
    text = pytesseract.image_to_string(Image.open(homepath +'out'+str(i)+'.jpg'))
    print(text)
    i=i+1
Run Code Online (Sandbox Code Playgroud)

mkl*_*mkl 5

您看到的“请稍候...”页面是pdf中唯一实际的pdf样式的内容(即具有内容流和资源等的pdf页面对象)。

启用所有功能后,您会看到的是pdf中包含的XFA表单的内容。

XFA(也称为XFA表单)代表XML Forms ArchitectureXML表单体系结构),这是一系列专有的XML规范,由JetForm提出和开发以增强Web表单的处理能力。从PDF 1.5规范开始,它也可以用在PDF文件中。XFA规范是完整应用ISO 32000-1规范(PDF 1.7)所必需的外部规范。XML表单体系结构尚未标准化为ISO标准,并且在PDF 2.0中已弃用。

XFA上的Wikipedia

大多数PDF处理器不处理XFA内容。特别是大多数免费或开放的pdf库都没有。

但是,只要您的pdf库允许直接访问低级pdf对象,您可以做的就是检索XFA XML并将其分析为XML流。

它位于目录 -> AcroForm- > XFA对象中:

所述XFA条目应包含整个XFA资源或任一个流的阵列指定各个数据包一起构成了整个XFA资源。[...]

是一对串并流的。字符串包含XML元素的名称,流包含XML元素的完整文本。

(ISO 32000-1第12.7.8节XFA表格)

  • 确实,pdf2image使用poppler,它具有一个开放的问题,几乎可以说它不会得到解决。https://gitlab.freedesktop.org/poppler/poppler/issues/530 (3认同)