大家好,

我现在尝试设计一个 Python 管线来从 PDFAnnual Accounts 中提取结构化的财务数据。 我想以自动转换这些文档为结构化财务数据,以供评估模型和财务分析使用。

预期的工作流程如下:

  1. 上传一个或多个 PDFAnnual Accounts
  2. 自动检测并提取 Balance Sheet 和 Income Statement
  3. 确定 帐号和金额的对应关系
  4. 将提取的数据转换为 标准化的账户结构
  5. 将所有数据导出为 结构化数据格式(Excel、dataframe 或数据库)
  6. 运行验证检查,如 Balance Sheet 等式和多年比较

困扰我的是 PDF 的结构非常不一致。

在实际中,我遇到的文件类型有:

1. 文本 PDF

  • 表格存在但通常结构很差
  • 列可能不正确对齐
  • 有时行会在行中断

2. 扫描 PDF

  • 整个文档都是一个图片
  • 需要 OCR 才能进行解析

3. 布局变异

  • cânance Sheet 和 Income Statement 的位置会改变
  • 表格结构会大大不同
  • 帐号的标签会在文件之间有所不同
  • 列和距边不一致

所以管线需要能够处理:

  • 文本提取
  • 扫描 PDF 的 OCR
  • 表格检测
  • 帐号识别
  • 映射到预定义的账户结构
  • 处理多年数据

我当前关于 Python 层面的考虑是:

  • pdfplumberPyMuPDF 进行文本提取
  • pytesseract + opencv 进行扫描 PDF 的 OCR
  • CamelotTabula 进行表格提取
  • pandas 进行数据清洗和重构
  • 自定义逻辑来识别帐号和映射它们

但是,我不是很确定这是处理糟糕的实际财务 PDF 的最合适方法。

我想为管线寻求建议。以下是几个问题:

  • 在不一致的 PDF 中有什么 Python 工具可以用于可靠地提取表格?
  • 是否最佳的方法是先在每个 PDF 上运行 OCR 还是检测是否需要 OCR?
  • 有什么库可以很好地处理财务表格提取?
  • 是否应该推荐基于规则的手段或基于 ML的手段来识别帐号和映射它们?
  • 怎么来设计管线的 总体架构

任何建议、库或实际经验都会非常有价值。

感谢 !