You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求帮助:使用Python将图片转换为dataframe

将表格图片转换为Pandas DataFrame的Python方案

准备工作

先安装必要的Python包:

pip install pytesseract pillow pandas

还需安装Tesseract OCR引擎:

  • Windows:前往Tesseract官方页面下载安装包,安装后将其路径添加到系统环境变量
  • Ubuntu/Debian:执行sudo apt-get install tesseract-ocr
  • macOS:执行brew install tesseract

完整代码

import pytesseract
from PIL import Image
import pandas as pd

# Windows用户需指定Tesseract安装路径,其他系统可注释此行
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 加载目标图片
img = Image.open('1nr0M.png')  # 替换为你的图片本地路径或下载后的路径

# 图片预处理:转灰度以提升OCR识别精度
img_gray = img.convert('L')

# 提取图片中的表格文本,按行结构化输出
ocr_result = pytesseract.image_to_data(img_gray, output_type=pytesseract.Output.DATAFRAME)

# 过滤空文本,仅保留有效内容
valid_text = ocr_result[ocr_result['text'].notna() & (ocr_result['text'].str.strip() != '')]

# 按识别块分组,拼接每行的单元格内容
grouped_rows = valid_text.groupby('block_num')['text'].apply(lambda x: '\t'.join(x)).tolist()

# 拆分表头与数据行
header = grouped_rows[0].split('\t')
data_rows = [row.split('\t') for row in grouped_rows[1:]]

# 构建DataFrame
df = pd.DataFrame(data_rows, columns=header)

# 查看结果
print(df)

优化提示

如果识别结果有误差,可尝试以下调整:

  • 对图片进行二值化处理(如img_gray.point(lambda x: 0 if x < 128 else 255, '1'))
  • 在image_to_data中添加配置参数config='--psm 6',强制Tesseract按单块文本识别
  • 手动修正识别错误的单元格内容

内容的提问来源于stack exchange,提问作者Seydou GORO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:47:47