【问题标题】:Camelot in python does not behave as expectedpython 中的 Camelot 的行为不符合预期
【发布时间】:2021-09-09 20:02:58
【问题描述】:

我有两个 pdf 文档,它们的布局相同,信息不同。问题是: 我可以完美地读取一个,但另一个数据无法识别。

这是一个我可以完美阅读的例子,下载here

from_pdf = camelot.read_pdf('2019_05_2.pdf', flavor='stream', strict=False)
df_pdf = from_pdf[0].df


camelot.plot(from_pdf[0], kind='text').show()
print(from_pdf[0].parsing_report)

这是预期的数据框:

这是一个例子,我看了之后无法识别信息,下载here:

from_pdf = camelot.read_pdf('2020_04_2.pdf', flavor='stream', strict=False)
df_pdf = from_pdf[0].df


camelot.plot(from_pdf[0], kind='text').show()
print(from_pdf[0].parsing_report)

这是包含无法识别信息的数据框:

我不明白我做错了什么以及为什么相同的代码对两个文件都不起作用。我需要一些帮助,谢谢。

【问题讨论】:

  • cid 基本上就是人物身份。您的 PDF 似乎没有正确构建,导致没有保存它使用的字体。将其报告给构建它的团队或将 PDF 转换为图像并尝试 OCR-ing。

标签: python-camelot


【解决方案1】:

问题:PDF格式错误


简单地说,问题在于您的第二个 PDF 格式不正确/已损坏。它不包含正确的字体信息,因此无法按原样从 PDF 中提取文本。这是一个已知的难题(参见question)。

您可以通过尝试使用 Google 文档打开 PDF 来检查这一点。

Google Docs 尝试提取文本,结果如​​下:

可能的解决方案


如果要提取文本,可以将文档打印为基于图像的 PDF 并执行 OCR 文本提取。 但是Camelot does not currently support image-based PDFs,所以无法提取表。

如果您无法恢复格式正确的 PDF,您可以尝试以下策略:

  • 将 PDF 打印为基于图像的 PDF
  • 为基于图像的 PDF 添加一个好的文本层(使用 OCRmyPDF
  • 尝试使用 Camelot 提取表

【讨论】:

  • 我会试着告诉你什么对我有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 2022-01-06
  • 1970-01-01
相关资源
最近更新 更多