我如何从头开始创建模型以从扫描的发票中提取文本和表格数据

问题描述 投票:0回答:1

我目前正在进行一个项目,我们收到了 25 种不同的发票类型,全部都是扫描的。最终目标是从发票中提取文本和表格数据,然后最终将这些数据解析到 Excel 中。发票类型有不同的格式。我们如何提取表格数据+文本?我们可以创建 1 个模型来为 25 种发票类型执行此操作吗?或者我们需要 25 个模型吗?

machine-learning nlp computer-vision artificial-intelligence ocr
1个回答
0
投票

从扫描发票中提取文本和表格数据涉及 OCR(光学字符识别)和后处理以构建数据。以下是您的项目的流程和注意事项的细分:

提取文本和表格数据的步骤

  1. OCR 用于文本提取:

    • 使用 Tesseract、Google Vision API 或 AWS Textract 等工具 将扫描的发票转换为机器可读的文本。

    • 这些工具通常提供边界框坐标,对于 提取结构化数据,例如表格。

  2. 预处理:

    • 图像增强:通过预处理图像(例如,去噪、调整大小、二值化)来提高 OCR 准确性。
    • 发票分段:将文本分成页眉、表格和页脚等部分。
  3. 表格数据提取:

    • 使用支持表格识别的 OCR 工具,例如 AWS Textract 或 Adobe Document Cloud。
    • 或者,应用网格检测技术(例如,霍夫线变换或使用 OpenCV 进行轮廓检测)来定位表格并提取行/列。
  4. 数据解析:

    • 对 OCR 输出进行后处理以匹配所需的结构。
    • 使用正则表达式、NLP 库或自定义逻辑来正确提取字段和映射数据。
  5. 导出到Excel:

    • 在 Python 中使用 Pandas 或 OpenPyXL 等库来构建数据并将其导出到 Excel。

模型注意事项

是否使用一种或多种模型取决于发票类型之间的相似性:

  1. 单一型号:

    • 如果发票类型共享相似的布局或包含常见的键值对和表结构,您可以使用 LayoutLMv3 等工具或专为文档处理设计的微调转换器来训练单个模型。

    • 使用标记数据集来训练模型以识别不同的部分并适应细微的变化。

  2. 多种型号: 如果发票格式差异很大(例如,不同的语言、表格放置或没有标准布局),则创建针对特定发票类型定制的多个模型或基于规则的管道可能是可行的。


推荐方法

  1. 从单一模型开始:

    • 使用预先训练的文档处理模型,如 LayoutLM 或 Donut(无 OCR)。
    • 使用包含所有 25 种发票类型样本的多样化数据集对模型进行微调。
  2. 添加自定义管道:

    • 针对明显偏离正常值的异常值或发票类型补充自定义逻辑。
    • 对文本较多的发票使用键值对提取,对数据较多的发票使用表检测算法。
  3. 迭代:

    • 评估所有发票类型的模型性能。
    • 仅当单个模型无法泛化时才调整或拆分为更小的管道/模型。

需要考虑的工具

  • OCR: Tesseract、Google Vision、AWS Textract、Adobe Document Cloud
  • 表提取:Camelot、Tabula、PyPDF2、OpenCV
  • 文档 AI: LayoutLMv3、Donut、Google 文档 AI
  • Excel 集成:Pandas、OpenPyXL、XlsxWriter
© www.soinside.com 2019 - 2024. All rights reserved.