使用Python从图像中提取表格

简介: 使用Python从图像中提取表格

640.jpg


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


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

链接:https://github.com/xavctn/img2table


我的库有什么作用?


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


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

如何使用它?


您可以通过pip安装该库,然后就可以使用了:

pip install img2table

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


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


上述示例中使用的图像

如果我们想提取表格的内容,则需要使用OCR工具,可以按如下方式实现:


from img2table.document import PDF
from img2table.ocr import TesseractOCR
# Instantiation of the pdf
pdf = PDF(src="mypdf.pdf")
# Instantiation of the OCR, Tesseract, which requires prior installation
ocr = TesseractOCR(lang="eng")
# Table identification and extraction
pdf_tables = pdf.extract_tables(ocr=ocr)
# We can also create an excel file with the tables
pdf.to_xlsx('tables.xlsx',
            ocr=ocr)

从PDF中提取的表格示例



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


“无边框”表格提取示例


这就是全部!实际上,库并没有太多复杂的东西,因为目标是尽可能简化,以避免其他可用解决方案可能带来的复杂性。


有关更详细的文档和示例,请查看项目的GitHub页面:https://github.com/xavctn/img2table


底层实现


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


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


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


之后,对线条进行一些处理以从线条中识别单元格,然后从单元格中识别表格。

实现算法的简化表示


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

相关文章
|
2月前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
90 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
4天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
15 3
|
1月前
|
存储 JSON API
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
41 7
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
|
2月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
117 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
2月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
104 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
3月前
|
机器学习/深度学习 人工智能 TensorFlow
使用Python和TensorFlow实现图像识别
【8月更文挑战第31天】本文将引导你了解如何使用Python和TensorFlow库来实现图像识别。我们将从基本的Python编程开始,逐步深入到TensorFlow的高级功能,最后通过一个简单的代码示例来展示如何训练一个模型来识别图像。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。
155 53
|
1月前
|
JSON API 数据格式
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
45 0
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
|
3月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
3月前
|
机器学习/深度学习 存储 算法
【2024泰迪杯】B 题:基于多模态特征融合的图像文本检索Python代码baseline
本文通过可视化分析,总结了2024年考研国家分数线的变化趋势,指出管理类MBA降低5分,哲学、历史学、理学、医学等10个专业分数线上涨,而经济学等专业出现下降,反映出不同专业分数线受考生数量、竞争情况和政策调整等因素的影响。
59 2
【2024泰迪杯】B 题:基于多模态特征融合的图像文本检索Python代码baseline
|
3月前
|
机器学习/深度学习 存储 算法
【2024泰迪杯】B 题:基于多模态特征融合的图像文本检索Python代码实现
本文提供了2024泰迪杯B题“基于多模态特征融合的图像文本检索”的Python代码实现,包括问题分析、多模态特征提取、特征融合模型和算法的构建,以及如何使用召回率作为评价标准进行模型性能评估的详细说明。
51 2
【2024泰迪杯】B 题:基于多模态特征融合的图像文本检索Python代码实现