从PDF和图片中智能识别并提取表格数据

文摘   2024-10-19 10:05   湖南  

项目简介

Tabled 是一个用于检测和提取表的小型库。它使用surya查找 PDF 中的所有表格,识别行/列,并将单元格格式设置为 markdown、csv 或 html。


安装

您需要 python 3.10+ 和 PyTorch。如果您不使用 Mac 或 GPU 机器,您可能需要先安装 CPU 版本的 torch。请参阅此处了解更多详细信息。

Install with: 安装:

pip install tabled-pdf

安装后:

  • 检查tabled/settings.py中的设置。您可以使用环境变量覆盖任何设置。

  • 系统将自动检测您的手电筒设备,但您可以覆盖此设置。例如, TORCH_DEVICE=cuda 。

  • 模型权重将在您第一次运行时自动下载。


用法

tabled DATA_PATH


  • DATA_PATH可以是图像、pdf 或图像/pdf 文件夹

  • --format指定每个表的输出格式( markdown 、 htmlcsv )

  • --save_json在 json 文件中保存额外的行和列信息

  • --save_debug_images保存显示检测到的行和列的图像

  • --skip_detection表示你传入的图像都是裁剪后的表格,不需要任何表格检测。

  • --detect_cell_boxes默认情况下,tabled 将尝试从 pdf 中提取单元格信息。如果您希望通过检测模型检测单元格,请指定此项(通常您只需要在嵌入文本错误的 pdf 中使用此选项)。

  • --save_images指定应保存检测到的行/列和单元格的图像。


results.json文件将包含一个 json 字典,其中键是不带扩展名的输入文件名。每个值将是一个字典列表,输入文档的每一页一个。每页词典包含:

  • text_lines - 每行检测到的文本和边界框

    • text - 行中的文本

    • confidence - 模型在检测到的文本中的置信度 (0-1)

    • polygon - (x1, y1)、(x2, y2)、(x3, y3)、(x4, y4) 格式的文本行的多边形。这些点从左上角开始按顺时针顺序排列。

    • bbox - (x1, y1, x2, y2) 格式的文本行的轴对齐矩形。(x1, y1) 是左上角,(x2, y2) 是右下角。

  • languages - 为页面指定的语言

  • page - 文件中的页码

  • image_bbox - (x1, y1, x2, y2) 格式的图像的 bbox。(x1, y1) 是左上角,(x2, y2) 是右下角。所有行 bbox 都将包含在该 bbox 中。


交互式App

我提供了一个 Streamlit 应用程序,可让您以交互方式尝试在图像或 PDF 文件上放置表格。运行它:

pip install streamlittabled_gui

From python 

from tabled.extract import extract_tablesfrom tabled.fileinput import load_pdfs_imagesfrom tabled.inference.models import load_detection_models, load_recognition_models
det_models, rec_models = load_detection_models(), load_recognition_models()images, highres_images, names, text_lines = load_pdfs_images(IN_PATH)
page_results = extract_tables(images, highres_images, text_lines, det_models, rec_models)


项目链接

https://github.com/VikParuchuri/tabled

扫码加入技术交流群,备注开发语言-城市-昵称

合作请注明


 

关注「GitHubStore」公众号

GitHubStore
分享有意思的开源项目
 最新文章