HOOOS

Python轻松实现图片文字识别:快速保存为TXT的简易教程

0 4 AI小助手 PythonOCR文字识别
Apple

想用Python搞个小工具,自动识别图片里的文字,然后存到TXT里?没问题,这篇教程就来帮你搞定!咱们用Python结合OCR(光学字符识别)技术,让这个过程变得简单快捷。

准备工作

首先,你需要安装两个重要的Python库:Pillow(用于图像处理)和pytesseract(Tesseract OCR引擎的Python封装)。Tesseract OCR引擎本身也需要安装,它是实际进行文字识别的工具。

1. 安装Tesseract OCR引擎

  • Windows: 你可以从https://digi.bib.uni-mannheim.de/tesseract/ 下载安装包。安装时,务必记住你的安装路径,后面会用到。
  • macOS: 可以使用Homebrew安装:brew install tesseract
  • Linux: 使用包管理器安装,例如:sudo apt-get install tesseract-ocr (Debian/Ubuntu) 或 sudo yum install tesseract (CentOS/RHEL)

2. 安装Python库

打开你的终端或命令提示符,运行以下命令:

pip install Pillow pytesseract

核心代码

接下来,就是见证奇迹的时刻了!把下面的代码复制到你的Python脚本里:

from PIL import Image
import pytesseract

# Tesseract OCR引擎的安装路径(根据你的实际安装路径修改)
# 如果已经添加到环境变量,则可以省略此步骤
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'  # 替换成你的路径


def image_to_text(image_path, output_path):
    """
    识别图片中的文字,并保存到TXT文件中。
    
    Args:
        image_path: 图片的路径。
        output_path: TXT文件的保存路径。
    """
    try:
        # 打开图片
        img = Image.open(image_path)

        # 使用pytesseract进行OCR识别
        text = pytesseract.image_to_string(img, lang='chi_sim') # 'chi_sim'是简体中文,根据图片语言调整

        # 将识别的文字保存到TXT文件
        with open(output_path, 'w', encoding='utf-8') as f:
            f.write(text)

        print(f"文字已成功识别并保存到 {output_path}")

    except FileNotFoundError:
        print(f"错误:找不到文件 {image_path}")
    except Exception as e:
        print(f"发生错误:{e}")


# 使用示例
image_path = 'test.png'  # 替换成你的图片路径
output_path = 'output.txt' # 替换成你想要保存的TXT文件路径

image_to_text(image_path, output_path)

代码解释:

  • from PIL import Image: 导入Pillow库,用于打开和处理图片。
  • import pytesseract: 导入pytesseract库,它是Tesseract OCR的Python接口。
  • pytesseract.pytesseract.tesseract_cmd = ...: 非常重要! 告诉pytesseract Tesseract OCR引擎的安装路径。 你需要根据你的实际安装路径修改这个值! 如果你已经将Tesseract添加到系统的环境变量中,可以省略这一行。
  • image_to_string(img, lang='chi_sim'): 使用Tesseract OCR引擎识别图片中的文字。lang='chi_sim'指定识别简体中文。如果你的图片是其他语言,需要修改这个参数,例如英文是'eng'
  • with open(output_path, 'w', encoding='utf-8') as f:: 以UTF-8编码打开一个文件用于写入,确保可以正确保存中文等特殊字符。

使用方法

  1. 替换路径: 将代码中的image_pathoutput_path替换成你自己的图片路径和TXT文件保存路径。
  2. 修改Tesseract路径: 一定要修改 pytesseract.pytesseract.tesseract_cmd 为你的Tesseract OCR引擎的实际安装路径。
  3. 运行代码: 保存代码,然后在你的Python环境中运行它。

常见问题及解决方案

  • TesseractNotFoundError: 这是最常见的问题。确保你已经正确安装了Tesseract OCR引擎,并且pytesseract.pytesseract.tesseract_cmd设置的是正确的路径。
  • 识别结果不准确: OCR的准确率受到图片质量的影响。可以尝试以下方法提高准确率:
    • 图像预处理: 使用Pillow库对图片进行预处理,例如灰度化、二值化、降噪等。这些操作可以提高文字的清晰度。
    • 调整Tesseract配置: 可以尝试调整Tesseract的配置参数,例如psm(Page Segmentation Mode)和oem(OCR Engine Mode)。
    • 训练自定义模型: 如果需要识别特定字体或排版的文字,可以考虑训练自定义的Tesseract模型。这需要一定的专业知识和大量的数据。
  • 中文乱码: 确保你的TXT文件以UTF-8编码保存。在open()函数中指定encoding='utf-8'

进阶技巧

  • 图像预处理: 使用Pillow库对图片进行预处理,可以显著提高OCR的准确率。常用的预处理操作包括:
    • 灰度化: img = img.convert('L')
    • 二值化: ```python
      threshold = 128 # 阈值,可以根据实际情况调整
      img = img.convert('L').point(lambda x: 0 if x < threshold else 255, '1')
      
      
    • 降噪: 可以使用各种滤波算法,例如中值滤波、高斯滤波等。
  • 批量处理: 可以编写一个循环,批量处理多个图片。
  • 使用不同的OCR引擎: 除了Tesseract,还有其他的OCR引擎可以使用,例如百度OCR、腾讯OCR等。这些引擎通常提供更准确的识别结果,但可能需要付费。

总结

通过这篇教程,你已经学会了如何使用Python和Tesseract OCR引擎来实现图片文字识别,并将识别结果保存到TXT文件中。希望这个小工具能帮助你提高工作效率!记住,实践是最好的老师,多尝试、多学习,你就能掌握更多的技巧。

现在,你可以尝试用你自己的图片来测试一下,看看效果如何!祝你玩得开心!

点评评价

captcha
健康