HOOOS

Python图片文字识别并保存:从入门到实践,轻松搞定OCR

0 3 AI小能手 Python OCR图片文字识别pytesseract
Apple

想用Python识别图片里的文字,然后保存到txt文件?没问题,这篇教程就带你一步步实现。别担心,即使你是新手,也能轻松上手!

1. 准备工作:安装必要的库

首先,我们需要安装一些Python库来帮助我们完成任务。主要用到两个库:

  • pytesseract: Tesseract OCR引擎的Python封装,用于实际的文字识别。
  • Pillow (PIL): Python图像处理库,用于读取图片。

打开你的终端或命令提示符,输入以下命令来安装它们:

pip install pytesseract Pillow

注意: 你还需要安装Tesseract OCR引擎。安装方式取决于你的操作系统:

  • Windows: 下载安装包 (https://digi.bib.uni-mannheim.de/tesseract/),安装后将Tesseract的安装路径添加到系统环境变量PATH中。
  • macOS: 可以使用Homebrew安装:
    brew install tesseract
    
  • Linux: 使用你的发行版包管理器安装,例如在Ubuntu/Debian上:
    sudo apt update
    sudo apt install tesseract-ocr
    

2. 编写Python代码

接下来,我们编写Python代码来实现图片文字识别并保存的功能。

from PIL import Image
import pytesseract

# Tesseract OCR引擎的安装路径(如果未添加到系统环境变量,则需要指定)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'  # Windows示例

# 图片文件路径
image_path = 'your_image.png'  # 替换成你的图片路径

# 输出文本文件路径
output_path = 'output.txt'

# 使用PIL打开图片
try:
    img = Image.open(image_path)
except FileNotFoundError:
    print(f"错误:找不到图片文件 {image_path}")
    exit()
except Exception as e:
    print(f"打开图片失败:{e}")
    exit()

# 使用pytesseract识别图片中的文字
try:
    text = pytesseract.image_to_string(img, lang='chi_sim') #  lang='chi_sim' 指定识别中文,如果识别英文可以不写
except Exception as e:
    print(f"文字识别失败:{e}")
    exit()

# 将识别出的文字写入txt文件
try:
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(text)
    print(f"文字已成功识别并保存到 {output_path}")
except Exception as e:
    print(f"写入文件失败:{e}")
    exit()

代码解释:

  1. 导入库: 导入PIL用于打开图片,pytesseract用于文字识别。
  2. 设置Tesseract路径 (可选): 如果你的Tesseract没有添加到系统环境变量,需要在这里指定它的安装路径。取消注释并修改成你的实际路径。特别注意,这里需要使用双反斜杠 \\
  3. 指定文件路径:image_path替换成你要识别的图片路径,output_path替换成你想要保存的txt文件路径。
  4. 打开图片: 使用PIL.Image.open()打开图片。这里加入了异常处理,如果找不到图片或者打开失败,程序会给出提示并退出。
  5. 文字识别: 使用pytesseract.image_to_string()识别图片中的文字。lang='chi_sim'表示识别简体中文。如果你的图片是英文,可以省略lang参数。同样加入了异常处理,防止识别失败。
  6. 写入文件: 使用with open()语句打开txt文件,并将识别出的文字写入。encoding='utf-8'指定使用UTF-8编码,以支持中文等特殊字符。也加入了异常处理,防止写入文件失败。

3. 运行代码

将代码保存为.py文件(例如ocr.py),然后在终端或命令提示符中运行它:

python ocr.py

如果一切顺利,你将在指定的output_path中找到包含识别出的文字的txt文件。

4. 优化技巧

  • 图片预处理: 对于一些质量较差的图片,可以先进行预处理,例如灰度化、二值化、降噪等,以提高识别准确率。可以使用PIL或其他图像处理库进行预处理。
  • 调整Tesseract配置: pytesseract.image_to_string()函数有很多参数可以调整,例如config参数可以用来指定Tesseract的配置选项。可以参考Tesseract的文档 (https://tesseract-ocr.github.io/tessdoc/) 来进行更高级的配置。
  • 使用其他OCR引擎: 除了Tesseract,还有其他的OCR引擎可供选择,例如Google Cloud Vision API、Baidu AI开放平台等。这些引擎通常具有更高的识别准确率,但可能需要付费。

5. 常见问题及解决方案

  • 识别结果乱码: 确保你的txt文件使用UTF-8编码保存。在open()函数中指定encoding='utf-8'
  • 识别准确率低: 尝试使用图片预处理技术,或者调整Tesseract的配置选项。也可以考虑使用其他的OCR引擎。
  • Tesseract找不到: 确保你已经正确安装了Tesseract,并且将它的安装路径添加到了系统环境变量中。
  • 报错“TesseractNotFoundError”: 这个错误通常是因为pytesseract找不到Tesseract的安装路径。你需要手动指定pytesseract.pytesseract.tesseract_cmd

6. 总结

通过这篇教程,你学会了如何使用Python进行图片文字识别并保存到txt文件。希望这些知识能帮助你解决实际问题。记住,实践是最好的老师!多尝试、多学习,你一定能成为OCR高手!

点评评价

captcha
健康