HOOOS

Python图像文字识别:Tesseract OCR库的安装与使用详解

0 13 爱敲代码的小白 Python OCRTesseract图像识别
Apple

想用Python实现图片文字识别?没问题,Tesseract OCR绝对能帮上忙!它是一款强大的开源OCR引擎,关键是免费!配合Python的pytesseract库,就能轻松实现图片转文字。

1. Tesseract OCR的安装

Windows:

  1. 下载安装包:UB Mannheim下载最新的Windows安装包。注意选择与你的系统匹配的版本(32位或64位)。
  2. 安装: 双击安装包,按照提示完成安装。重点: 记住你的安装路径,比如C:\Program Files\Tesseract-OCR,后面要用到。
  3. 配置环境变量:
    • 打开“控制面板” -> “系统与安全” -> “系统” -> “高级系统设置”。
    • 点击“环境变量”。
    • 在“系统变量”中,找到“Path”,点击“编辑”。
    • 点击“新建”,添加Tesseract OCR的安装路径。例如:C:\Program Files\Tesseract-OCR
    • 再点击“新建”,添加TESSDATA_PREFIX变量,值为C:\Program Files\Tesseract-OCR\tessdata
    • 一路点击“确定”保存设置。

macOS:

  1. 使用Homebrew安装: 如果你还没有安装Homebrew,先安装它:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 安装Tesseract: 在终端运行:brew install tesseract

Linux (Ubuntu/Debian):

在终端运行:sudo apt update && sudo apt install tesseract-ocr

2. pytesseract的安装

pytesseract是Python中调用Tesseract OCR的桥梁,用pip就能搞定:

pip install pytesseract pillow

pillow库是用来处理图片的,也需要安装。

3. 简单上手:图片转文字

下面是一个简单的例子,把图片image.png里的文字提取出来:

import pytesseract
from PIL import Image

# 如果Tesseract不在默认路径,需要指定路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # 替换成你的实际路径

image_path = 'image.png'

try:
    img = Image.open(image_path)
    text = pytesseract.image_to_string(img, lang='chi_sim') # 指定语言为简体中文
    print(text)

    # 保存到txt文件
    with open('output.txt', 'w', encoding='utf-8') as f:
        f.write(text)

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

代码解释:

  • pytesseract.pytesseract.tesseract_cmd: 非常重要! 如果你的Tesseract没有添加到环境变量,或者pytesseract找不到Tesseract的安装路径,就需要手动指定。替换成你自己的安装路径。
  • Image.open(image_path): 用Pillow库打开图片。
  • pytesseract.image_to_string(img, lang='chi_sim'): 这是核心函数,把图片转换成文字。lang='chi_sim'指定识别语言为简体中文。如果你的图片是英文,可以改成lang='eng'
  • with open('output.txt', 'w', encoding='utf-8') as f:: 把提取出来的文字保存到output.txt文件,encoding='utf-8'是为了支持中文。
  • try...except: 用了异常处理,防止程序出错崩溃。

4. 提高识别准确率的小技巧

  • 图片预处理: Tesseract对图片质量要求比较高。如果图片模糊、倾斜、对比度低,识别效果会很差。可以尝试用Pillow或其他图像处理库进行预处理,例如:

    • 灰度化: img = img.convert('L')
    • 二值化: 根据灰度值设置一个阈值,将像素点设为黑或白。
    • 降噪: 去除图片中的噪点。
    • 倾斜校正: 校正图片中的倾斜。
  • 指定识别区域: 如果你只关心图片中的一部分区域,可以用Pillow截取这部分区域,再进行识别。

  • 训练Tesseract: 如果你需要识别特殊字体或特定领域的文字,可以训练Tesseract,提高识别准确率。这部分比较复杂,可以参考Tesseract的官方文档。

  • 调整psm (Page Segmentation Mode) 参数: psm参数控制Tesseract如何分析图片中的文本布局。可以尝试不同的psm值,看看哪个效果最好。例如:

    text = pytesseract.image_to_string(img, lang='chi_sim', config='--psm 6')
    

    常用的psm值有:

    • 0: Orientation and script detection (OSD) only.
    • 1: Automatic page segmentation with OSD.
    • 3: Fully automatic page segmentation, but no OSD (or OCR).
    • 4: Assume a single column of text of variable sizes.
    • 6: Assume a single uniform block of text.
    • 7: Treat the image as a single text line.
    • 8: Treat the image as a single word.
    • 13: Raw line. Treat the image as a single text line, bypassing hacks that are Tesseract-specific.
  • 使用oem (OCR Engine Mode) 参数: oem参数控制Tesseract使用的OCR引擎。可以尝试不同的oem值。例如:

    text = pytesseract.image_to_string(img, lang='chi_sim', config='--oem 3')
    

    常用的oem值有:

    • 0: Legacy engine only.
    • 1: Neural nets LSTM engine only.
    • 2: Tesseract + LSTM engines.
    • 3: Default, based on what is available.

5. 总结

Tesseract OCR是一个非常强大的免费OCR引擎,配合Python的pytesseract库,可以方便地实现图片文字识别。但是,识别准确率受到图片质量的影响。通过图片预处理、指定识别区域、训练Tesseract等方法,可以提高识别准确率。希望这篇文章能帮助你入门Python图像文字识别!

点评评价

captcha
健康