如何将包含表格数据的JPEG/PNG/BMP图片内容读取到pandas dataframe中
图片表格提取导入Pandas DataFrame 实现方案
目前主流实现逻辑是结合表格结构识别与OCR文字识别提取表格的行列布局和单元格内容,再转换为DataFrame格式,以下是可直接落地的两种方案:
方案1:基于PaddleOCR快速实现(推荐,中文表格识别精度高)
该方案无需自行处理表格行列分割逻辑,工具库已封装完整识别能力,适合绝大多数常规场景:
- 安装依赖
执行命令安装所需库:pip install paddlepaddle paddleocr pandas - 核心实现代码
from paddleocr import PaddleOCR import pandas as pd # 初始化OCR模型,开启方向分类适配倾斜图片,lang可根据表格语言调整为en/zh等 ocr = PaddleOCR(use_angle_cls=True, lang='ch', show_log=False) # 替换为本地图片路径,支持jpeg、png、bmp等格式 img_path = 'test_table.jpeg' # 执行识别 ocr_result = ocr.ocr(img_path, cls=True) # 提取每行的单元格文本 table_rows = [] for page in ocr_result: for line in page: row_content = [cell[1][0] for cell in line] table_rows.append(row_content) # 转换为DataFrame,若第一行为表头则用第一行作为列名 df = pd.DataFrame(table_rows[1:], columns=table_rows[0]) # 可直接导出为csv或做后续处理 # df.to_csv("output_table.csv", index=False) print(df)
方案2:基于Tesseract + TableTransformer 实现(适合自定义开发场景)
如果你需要对识别逻辑做自定义调整,可使用该组合方案:
- 安装依赖
- 先安装系统级Tesseract OCR引擎,对应系统版本可直接搜索官方安装方法
- 安装Python依赖:
pip install pytesseract table-transformers pandas pillow opencv-python
- 核心逻辑:先调用TableTransformer检测表格的行列坐标边界,裁剪出单个单元格后调用Tesseract识别单元格内容,最后按行列顺序拼接为二维列表,即可转换为DataFrame。
注意:如果识别的图片存在倾斜、模糊、背景杂乱的情况,可提前用OpenCV做二值化、倾斜校正、去噪等预处理操作,能大幅提升识别准确率。
内容的提问来源于stack exchange,提问作者technophile_3
相关产品推荐
相关产品推荐

