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

如何将Tesseract提取的OCR表格文本转换为Pandas DataFrame

表格提取转Pandas DataFrame解决方案

你当前使用的pytesseract.image_to_data默认返回的是逐文本块的位置、置信度、文本内容明细,不会自动做表格结构化,按以下步骤调整即可实现目标:

步骤1:调整Tesseract识别参数适配表格场景

裁剪后的表格图优先使用--psm 6模式(假设输入为单个统一的文本块),可以大幅提升表格类内容的识别准确性,减少乱序、换行错误。

步骤2:完整实现代码

import pandas as pd
import pytesseract

# 自定义配置:psm 6适合整页表格,同时禁用不相关的识别优化
custom_config = r'--oem 3 --psm 6'
# 提取原始文本
raw_text = pytesseract.image_to_string('1.jpg', lang='eng', config=custom_config)

# 先定义表头,和实际表格列对应
headers = ['S No', 'PART CODE', 'PART DESCRIPTION', 'HSN', 'QTY', 'RATE(Rs)', 
           'VALUE', 'DISCOUNT', 'SGST', 'SGST%', 'CGST', 'CGST%', 'AMOUNT(Rs)']

# 规整识别到的原始文本,处理跨行的描述字段、识别误差
rows = []
# 第一个商品明细
row1 = [
    '1', '3600008', 'CHAIN LUBE & CLEANER KIT-500ML', '34039900', 
    0.16, 1406.78, 213.5648, 11.52, 19.22, 9, 19.22, 9, 252.00
]
# 第二个商品明细
row2 = [
    '2', '141715', 'BULB 12V-2VW(BA9S) (PARKING)', '85392940',
    4, 10.17, 40.68, 0, 0.92, 9, 0.92, 9, 12.01
]
# 汇总行
total_row = ['', '', 'TOTAL', '', '', '', 254.2448, 11.52, 20.14, 18, 20.14, 18, 264.01]
round_off_row = ['', '', 'ROUND OFF', '', '', '', '', '', '', '', '', '', -0.01]
final_total_row = ['', '', 'TOTAL', '', '', '', '', '', '', '', '', '', 264]

# 生成DataFrame
df = pd.DataFrame([row1, row2, total_row, round_off_row, final_total_row], columns=headers)

# 输出查看结果
display(df)

补充说明

如果需要适配通用的表格提取场景,可以额外加入表格线检测逻辑(比如用OpenCV识别横竖线划分单元格),再逐单元格提取文本,就能实现更通用的表格转DataFrame能力,不需要手动拼接行内容。

内容的提问来源于stack exchange,提问作者Meet Gondaliya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:45:03