我正在寻找一种从 PDF 文件中提取文本和表格的解决方案。虽然有些包很适合提取文本,但它们不足以提取表格。
一种解决方案是使用 Azure 表单识别器布局模型,但是当我们混合使用文本和表格时它会失败,特别是当表格是一种文本格式并且它们将表格和文本的内容混合在一起时(请参阅 Azure 表单识别器代码https ://github.com/Azure-Samples/cognitive-services-quickstart-code/blob/master/python/FormRecognizer/rest/python-train-extract.md)。
我也试过 pypdf2 和 pdfplumber;这是pypdf2的代码:
import PyPDF2 data_path = "directory/to/pdf/files" texts = [] for fp in os.listdir(data_path): pdfFileObj = open(os.path.join(data_path, fp), 'rb') print(pdfFileObj) # pdfreader=PyPDF2.PdfFileReader(pdfFileObj) # count=pdfreader.numPages # text = " " for i in range(count): page = pdfreader.getPage(i) text += page.extractText() texts.extend([text])
首先, pypdf2 对某些 pdf 文件效果不错,但它失败并且不会保留某些 pdf 的单词之间的空格,例如(来自https://www.researchgate.net/publication/342920307_Using_Topic_Modeling_Methods_for_Short-Text_Data_A_Comparative_Analysis的 pdf 文件):
其次,如果页面中存在表格,我如何提取表格?pdfplumber 可以使用 extract_text() 和 extract_table() 注释提取文本和表格。它无法为某些文档保留单词之间的空格。当我们有经验的双列 pdf 文件时,它也会失败。
Tabula 是另一种选择,但我从他们的网站https://github.com/tabulapdf/tabula看到的表格很好。我的最终问题是从给定单列或双列页面的 pdf 文件中提取内容、文本和表格的最佳实践是什么。