【问题标题】:Partially searchable pdf document部分可搜索的 pdf 文档
【发布时间】:2021-03-13 13:32:24
【问题描述】:

我正在使用 tabula 库来阅读每个 pdf。在每个 pdf 中都有一个表,其中包含其标题(列)及其相应的信息。除了最后一个 pdf 之外,一切都运行良好。 代码:

import tabula

read_pdf(path, pages = "2",  multiple_tables = False, 
output_format = 'dataframe', pandas_options ={header: None})

部分数据帧输出(示例):

nan SBI nan nan nan nan nan nan nan nan nan nan
JKL1LU1UKDAO/ /O/NEPLW45WF3CKL  AF HSF1P PUAVKM RO0SA OSOAEAUMM5M31/6 PO LLŠF
KLMIMOG 0TLSL P0EK RV V OKŠGVJAVUAMNAWA ACADFUIF S JN FKFKLLLGLDAA2F LEV KA OTIF 2A4 KACNATULO01F2NVSCFRE  BB AG05ANJA OLE4CPIVL1SGA 2AFK MR0HASET2PMG MLIONEKO0KF 0IEOJB1 L E NECGCVL1GXLDA 7019N8BVPV90

这是定义。不是代码,因为我什至尝试了基于网络的表格链接:https://tabula.technology/ 您可以在其中指定纵横比(例如在我使用的代码中),它有时只是识别单词或字符。

似乎它与 pdf 表在 pdf 中的构造方式有关。当我在 pdf 中进行编辑时,我可以看到一堆文本框,有时将垃圾文本作为一组,有时它们是单独的字母、单词等。

在页面的某些部分还有某种隐藏层——信息。

即使在我尝试加载 pdf 时裁剪特定部分、删除元数据、隐藏和重叠对象然后再次将其导出为 pdf(在 adobe reader 中),问题仍然存在。

我可以从 pdf 中获取正确文本的唯一方法是仅使用以下库和代码抓取文本:

import fitz

text = ""
path = "file.pdf"

doc = fitz.open(path)
for page in doc:
    text += page.getText()
  

这给了我在 pdf 中的样子,但这与数据框相差甚远,这意味着它需要很长时间来预处理它的数据,清理它,并以正确的格式解析它,以便最终获得所需的数据框,应该可以直接用 tabula 完成。

尝试了另外两个库:pyPDF2 和 pdfMiner 都产生字符串输出,这需要很长的时间来预处理它。

from pdfminer.high_level import extract_text

text = extract_text(path.pdf)

因此,我的问题是:

  1. 这里的最佳实践方法是什么。我应该尝试将 pdf 转换为完全可搜索的文本吗?如果是这样,最pythonic的方式是什么?
  2. 尝试在 python 之外进行裁剪似乎是新手方法,我正在裁剪和删除内容以获得纵横比并删除一些数据。必须是一种访问所有这些信息的方法才能获取数据框

主要思想是按原样阅读 pdf 并实际复制以获取数据框中的表以便能够使用它进行操作。欢迎提出任何建议。

提前致谢!

【问题讨论】:

    标签: python pandas dataframe pdf


    【解决方案1】:

    从部分可搜索的 pdf 文件中提取表格的解决方案是使用 adobe reader 中的 OCR 功能。在该表格能够实际读取和提取它之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2021-05-20
      • 1970-01-01
      相关资源
      最近更新 更多