pdfminer无法从不可编辑(即扁平)PDF表单中的字段中提取文本和坐标



我正试图使用pdfminer从已填充的不再可编辑的PDF表单中提取所有单词/文本以及每个单词的坐标(即,它们是扁平的,而不是顶点(。我只能提取字段外的文本和坐标。例如,在所附的图像上,";。。。大写字母或勾号✓如有必要"可以提取。但是";迪斯尼乐园"米奇;等等不能。

结果,在我使用的代码中,单词&由于这个问题,从空白表格中提取的坐标、填写的Acroform和不可编辑的pdf表格完全相同。

有没有任何方法可以使用pdfminer或任何替代包来解决这个问题?

PDF样本可在此处找到:https://drive.google.com/file/d/1HroGrPqADRQ0_ccsIP6wHmqof0ghTdVZ/view

这是代码:

from pdfminer.layout import LAParams, LTTextBox, LTText, LTChar, LTAnno
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager
from pdfminer.converter import PDFPageAggregator
fp = open('sample.pdf', 'rb')
manager = PDFResourceManager() 
laparams = LAParams()
dev = PDFPageAggregator(manager, laparams=laparams)
interpreter = PDFPageInterpreter(manager, dev) 
pages = PDFPage.get_pages(fp)
count = 0
x_list, y_list, x1_list, y1_list,text_list = [],[],[],[],[]
for page in pages:
print('--- Processing Page ---')

interpreter.process_page(page)
layout = dev.get_result()
x, y, x1, y1, text = -1, -1, -1, -1,''
for textbox in layout:
if isinstance(textbox, LTText):
for line in textbox:
for char in line:
if isinstance(char, LTAnno) or char.get_text() == ' ':
if x != -1:
print('At %r is text: %s' % ((x, y, x1, y1), text))
x_list.append(x)
y_list.append(y)
x1_list.append(x1)
y1_list.append(y1)
text_list.append(text)
x, y, x1, y1, text = -1, -1, -1, -1, ''     
elif isinstance(char, LTChar):
text += char.get_text()
if x == -1:
x, y, x1, y1 = char.bbox[0], char.bbox[3], char.bbox[2], char.bbox[1]                                     

if x != -1:
print('At %r is text: %s' % ((x, y, x1, y1), text))
x_list.append(x)
y_list.append(y)
x1_list.append(x1)
y1_list.append(y1)
text_list.append(text)

pdf 样本图片

我已经能够解决您的问题。查看屏幕截图。创建你的免费帐户Konfuzio免费帐户我用你的文档创建了一个项目,我能够提取所有字段(甚至米奇和迪斯尼乐园(这是一张截图有关如何使用训练模型从多个文档中自动提取数据的教程,请查看此处

最新更新