当前位置:首页 > 科技  > 软件

使用Python从图像中提取表格

来源: 责编: 时间:2023-11-15 17:17:17 332观看
导读大约一年前,我被分配任务从文件中提取和结构化数据,主要是包含在表格中的数据。我之前对计算机视觉没有了解,并且很难找到一个合适的“即插即用”的解决方案。当时可选的方案要么是基于最新神经网络(NN)的解决方案,这些解决

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

9Qk28资讯网——每日最新资讯28at.com

受现有OpenCV脚本的启发,我开发了一种简单而一致的方法来提取表格,并将其制作成一个开源的Python库:img2table。9Qk28资讯网——每日最新资讯28at.com

链接:https://github.com/xavctn/img2table9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

我的库有什么作用?

9Qk28资讯网——每日最新资讯28at.com

与深度学习解决方案相比,这个轻量级的包不需要训练和最小化参数化。它提供了以下功能:9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

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

如何使用它?

9Qk28资讯网——每日最新资讯28at.com

您可以通过pip安装该库,然后就可以使用了:9Qk28资讯网——每日最新资讯28at.com

pip install img2table

在文档中识别表格只需调用一个函数:9Qk28资讯网——每日最新资讯28at.com

from img2table.document import Image# Instantiation of the imageimg = Image(src="myimage.jpg")# Table identificationimg_tables = img.extract_tables()# Result of table identificationimg_tables[ExtractedTable(title=None, bbox=(10, 8, 745, 314),shape=(6, 3)), ExtractedTable(title=None, bbox=(936, 9, 1129, 111),shape=(2, 2))]

9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

上述示例中使用的图像9Qk28资讯网——每日最新资讯28at.com

如果我们想提取表格的内容,则需要使用OCR工具,可以按如下方式实现:9Qk28资讯网——每日最新资讯28at.com

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)

9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

从PDF中提取的表格示例9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

最后,在简单的情况下,可以通过设置`borderless_tables`参数来执行“无边框”表格的提取。这允许检测那些单元格不需要完全被边框包围的表格。9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

“无边框”表格提取示例9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

这就是全部!实际上,库并没有太多复杂的东西,因为目标是尽可能简化,以避免其他可用解决方案可能带来的复杂性。9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

有关更详细的文档和示例,请查看项目的GitHub页面:https://github.com/xavctn/img2table9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

底层实现

9Qk28资讯网——每日最新资讯28at.com

所有图像处理都使用OpenCV和opencv-python库完成。然而,这仍然相当基础。9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

算法的骨架是Hough变换,它能够识别图像中的线条,使我们能够检测图像的水平和垂直线条。9Qk28资讯网——每日最新资讯28at.com

cv2.HoughLinesP(img, rho, theta, threshold, None, minLinLength, maxLineGap)

9Qk28资讯网——每日最新资讯28at.com

之后,对线条进行一些处理以从线条中识别单元格,然后从单元格中识别表格。9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

实现算法的简化表示9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

大多数计算使用Polars进行,以实现良好的性能和速度。9Qk28资讯网——每日最新资讯28at.com

9Qk28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-25992-0.html使用Python从图像中提取表格

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: C语言结构体用法详解

下一篇: 由“点”向“面”!简析新一代WAF的理念与应用

标签:
  • 热门焦点
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • 一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • 十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼‍‍‍‍‍‍‍‍‍‍东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • 质感不错!OPPO K11渲染图曝光:旗舰IMX890传感器首次下放

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
  • 由于成本持续增加,笔记本产品价格预计将明显上涨

    根据知情人士透露,由于材料、物流等成本持续增加,笔记本产品价格预计将在2021年下半年有明显上涨。进入6月下旬以来,全球半导体芯片缺货情况加剧,显卡、处理器
Top