总结
豆包 AI 助手文章总结

使用Python从图像中提取表格

WBOY
发布: 2023-11-17 22:15:07
转载
1602人浏览过

大约一年前,我被分配任务从文件中提取和结构化数据,主要是包含在表格中的数据。我之前对计算机视觉没有了解,并且很难找到一个合适的“即插即用”的解决方案。当时可选的方案要么是基于最新神经网络(nn)的解决方案,这些解决方案庞大而繁琐,要么是基于opencv的较简单的解决方案,但不够一致。

立即学习Python免费学习笔记(深入)”;

受现有OpenCV脚本的启发,我开发了一种简单而一致的方法来提取表格,并将其制作成一个开源的Python库:img2table

需要被重写的内容是:链接:https://github.com/xavctn/img2table

使用Python从图像中提取表格

立即学习Python免费学习笔记(深入)”;

我的库有什么作用?

立即学习Python免费学习笔记(深入)”;

与深度学习解决方案相比,这个轻量级的包不需要训练和最小化参数化。它提供了以下功能:

立即学习Python免费学习笔记(深入)”;

  • 识别图像和PDF文件中的表格,包括在表格单元级别的边界框。
  • 通过支持OCR服务/工具(Tesseract、PaddleOCR、AWS Textract、Google Vision和Azure OCR目前支持)来提取表格内容。
  • 处理复杂的表格结构,如合并单元格。
  • 实现纠正图像的倾斜和旋转的方法。
  • 提取的表格以一个简单的对象形式返回,包括一个Pandas DataFrame表示。
  • 将提取的表格导出为Excel文件的选项,保留其原始结构。

如何使用它?

立即学习Python免费学习笔记(深入)”;

可以使用pip来安装这个库,安装完成后就可以使用了

pip install img2table
登录后复制

在文档中识别表格只需调用一个函数:

从img2table.document导入Image类# 图像实例化
img = Image(src="myimage.jpg")# 表格识别
img_tables = img.extract_tables()# 表格识别结果
img_tables[ExtractedTable(title=None, bbox=(10, 8, 745, 314),shape=(6, 3)), ExtractedTable(title=None, bbox=(936, 9, 1129, 111),shape=(2, 2))]
登录后复制

立即学习Python免费学习笔记(深入)”;

立即学习Python免费学习笔记(深入)”;

使用Python从图像中提取表格

需要被改写的内容是:上述示例中使用的图像

如果我们想要提取表格的内容,就需要使用OCR工具。可以按照以下步骤来实现:

from img2table.document import PDFfrom img2table.ocr import TesseractOCR# Instantiation of the pdfpdf = PDF(src="mypdf.pdf")# Instantiation of the OCR, Tesseract, which requires prior installationocr = TesseractOCR(lang="eng")# Table identification and extractionpdf_tables = pdf.extract_tables(ocr=ocr)# We can also create an excel file with the tablespdf.to_xlsx('tables.xlsx',ocr=ocr)
登录后复制

立即学习Python免费学习笔记(深入)”;

使用Python从图像中提取表格

示例表格是从PDF文件中提取出来的样本

立即学习Python免费学习笔记(深入)”;

最后,在简单的情况下,可以通过设置`borderless_tables`参数来执行“无边框”表格的提取。这允许检测那些单元格不需要完全被边框包围的表格。

使用Python从图像中提取表格

无需更改原始意思,需要重写的内容是:“无边框”表格提取示例

立即学习Python免费学习笔记(深入)”;

这是全部内容!事实上,仓库并不复杂,因为我们的目标是尽可能简化,避免引入其他可能带来复杂性的解决方案

立即学习Python免费学习笔记(深入)”;

请访问项目的GitHub页面以获取更详细的文档和示例:https://github.com/xavctn/img2table

立即学习Python免费学习笔记(深入)”;

底层实现

立即学习Python免费学习笔记(深入)”;

所有图像处理都使用OpenCV和opencv-python库完成。然而,这仍然相当基础。

立即学习Python免费学习笔记(深入)”;

算法的核心是Hough变换,它能够识别图像中的直线,使我们能够检测图像中的水平和垂直线条

需要重写的内容是:cv2.HoughLinesP(img, rho, theta, threshold, None, minLinLength, maxLineGap)
登录后复制

立即学习Python免费学习笔记(深入)”;

在这之后,我们需要对线条进行一些处理,以便从中识别出单元格,并从单元格中进一步识别出表格

使用Python从图像中提取表格

简化算法表示的实现方式

立即学习Python免费学习笔记(深入)”;

大多数计算使用Polars进行,以实现良好的性能和速度。

立即学习Python免费学习笔记(深入)”;

以上就是使用Python从图像中提取表格的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:51CTO.COM网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号