请求帮助:使用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
相关产品推荐
相关产品推荐

