You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python提取多图片文本并导出指定格式CSV?

解决图片文本提取与CSV导出问题

我来帮你一步步搞定这两个问题~首先你原来的代码只是读取了图片,还缺少**文本提取(OCR)**的核心步骤,我们需要借助Tesseract这个OCR工具来完成。

准备工作

先安装必要的依赖包:

  • 安装Python库:pip install opencv-python pytesseract pandas
  • 安装Tesseract OCR引擎:
    • Windows:从Tesseract官方仓库下载安装包,记得勾选添加到系统路径(或者后续在代码里手动指定路径)
    • Mac:brew install tesseract
    • Linux:sudo apt-get install tesseract-ocr

问题1:查看每张图片提取出的文本

我们可以在循环里加入OCR提取逻辑,然后直接打印每张图片的提取结果。完整代码如下:

import os
import glob
import cv2
import pytesseract
import pandas as pd

# Windows用户如果没把Tesseract加入系统路径,需要手动指定路径
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

img_dir = "MyFolder" # 你的图片文件夹路径
data_path = os.path.join(img_dir,'*g') # 匹配jpg/png等图片格式
files = glob.glob(data_path)

# 存储图片编号和对应文本的列表
image_text_list = []

for img_num, file_path in enumerate(files, start=1):
    # 读取图片
    img = cv2.imread(file_path)
    # 转为灰度图(提升OCR识别准确率)
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 提取图片文本
    extracted_text = pytesseract.image_to_string(gray_img)
    # 清理文本:去除多余空格、换行
    cleaned_text = extracted_text.strip().replace('\n', ' ')
    
    # 打印每张图片的提取结果(解决问题1)
    print(f"Image_no. {img_num}: {cleaned_text}")
    
    # 将数据存入列表,为导出CSV做准备
    image_text_list.append({
        "Image_no.": img_num,
        "Text": cleaned_text
    })

运行这段代码后,控制台就会逐个打印每张图片的编号和提取出的文本啦。


问题2:导出图片名称及提取文本到CSV文件

我们可以用pandas来快速生成符合要求的CSV文件,在上面的代码基础上,添加以下代码即可:

# 将列表转为DataFrame
df = pd.DataFrame(image_text_list)
# 导出CSV,index=False表示不保存索引列,utf-8-sig避免中文乱码
df.to_csv("image_text_results.csv", index=False, encoding='utf-8-sig')

print("CSV文件已成功导出到当前目录!")

导出的CSV文件会有两列:Image_no.(从1开始的图片编号)和Text(对应的提取文本)。如果你想用图片文件名代替编号,只需要把img_num换成os.path.basename(file_path)即可,修改后的代码片段如下:

# 替换循环里的存储逻辑
image_text_list.append({
    "Image_no.": os.path.basename(file_path), # 用图片文件名作为编号
    "Text": cleaned_text
})

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

火山引擎 最新活动