ocr图像转文字识别--1-识别率低

328 阅读4分钟

以下是基于Python的OCR图像转文字识别的完整示例,包括代码和数据集的说明:

一、环境准备

  1. 安装Python:确保已安装Python 3.6及以上版本。

  2. 安装相关库

    • 安装Pillow库,用于图像处理:

      bash复制

      pip install Pillow
      
    • 安装pytesseract库,作为Tesseract OCR的Python接口:

      bash复制

      pip install pytesseract
      
    • 安装Tesseract OCR引擎:

二、代码示例

以下是一个完整的Python代码示例,用于从图像中提取文字:

Python复制

from PIL import Image
import pytesseract

# 如果是Windows系统,需要指定Tesseract的路径
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 打开图像文件
image = Image.open('example_image.jpg')  # 替换为你的图像路径

# 可选:对图像进行预处理
# image = image.convert('L')  # 转换为灰度图像
# enhancer = ImageEnhance.Contrast(image)
# image = enhancer.enhance(2)  # 增强对比度

# 使用pytesseract进行文字识别
# 默认识别英文,如果需要识别中文,添加lang='chi_sim'
text = pytesseract.image_to_string(image, lang='eng')

# 输出识别的文字
print(text)

三、数据集

OCR任务通常需要图像数据集进行训练或测试。以下是一些常用的OCR数据集:

  1. MNIST数据集:虽然主要用于手写数字识别,但也可以用于简单的OCR任务。
  2. IIIT-5K数据集:包含5000张单词图像,用于单词识别任务。
  3. ICDAR数据集:包含各种场景下的文本图像,常用于场景文字识别。

四、注意事项

  1. 图像预处理:对图像进行灰度化、二值化、去噪等预处理操作可以提高OCR的准确性。
  2. 语言包:如果需要识别其他语言的文字,需要下载对应的语言包并指定语言。
  3. Tesseract路径:在Windows系统中,可能需要手动指定Tesseract的路径。

通过以上步骤和代码示例,你可以快速实现OCR图像转文字识别功能。如果需要进一步优化识别效果,可以尝试更复杂的图像预处理方法或使用更高级的OCR库。

五、优化识别

ocr识别时使用了tesseract-ocr默认功能,识别率较低,可以结合tesseract-ocr的文字识别模型提高识别精确度

以下是手动下载 EasyOCR 模型文件并使用它们的详细步骤。这些步骤将帮助你解决因网络问题导致的模型下载失败问题。

手动下载 EasyOCR 模型文件

1. 下载检测模型(detector)

2. 下载英文识别模型(recognizer)

  • english_g2.pth:这是 EasyOCR 用于英文文本识别的模型文件。

    • 下载链接:你可以从以下百度云链接下载包含该文件的压缩包:

模型文件放置路径

下载完成后,将这些 .pth 文件放置在 EasyOCR 的模型存储目录中。默认路径如下:

  • WindowsC:\Users<你的用户名>.EasyOCR\model
  • Linux/Mac~/.EasyOCR/model

例如,在 Windows 系统中,路径可能是 C:\Users\Administrator.EasyOCR\model

修改代码以使用本地模型

在代码中,指定模型存储路径,确保 EasyOCR 能够找到这些模型文件。以下是示例代码:

Python复制

import cv2
import easyocr
import os

# 设置模型存储路径
model_storage_directory = r'C:\Users\Administrator\.EasyOCR\model'

# 确保模型路径存在
os.makedirs(model_storage_directory, exist_ok=True)

# 打开图像文件
image_path =r'D:\\image\\fapiao\\a1.jpg'    # 替换为你的图像路径
image = cv2.imread(image_path)

# 检查图像是否正确加载
if image is None:
    print(f"Error: Unable to load image at {image_path}")
    exit()

# 图像预处理
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
denoised_image = cv2.medianBlur(gray_image, 5)
_, binary_image = cv2.threshold(denoised_image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

# 初始化 EasyOCR 识别器
reader = easyocr.Reader(['en', 'ch_sim'], gpu=False, model_storage_directory=model_storage_directory)
 

 

# 使用 EasyOCR 进行文字识别
result = reader.readtext(binary_image)

# 输出识别结果
for detection in result:
    text = detection[1]  # 提取识别的文字
    print(text)

# 可选:绘制识别结果(在原图上绘制边框和文字)
for detection in result:
    bbox, text, confidence = detection
    top_left = tuple(map(int, bbox[0]))
    bottom_right = tuple(map(int, bbox[2]))
    cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)
    cv2.putText(image, text, top_left, cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)

# 保存绘制结果
output_path = 'output_image.jpg'
cv2.imwrite(output_path, image)
print(f"识别结果已保存到 {output_path}")

注意事项

  1. 模型文件完整性:确保下载的模型文件完整且未损坏。如果文件损坏,重新下载。
  2. 路径正确性:确保模型文件路径与代码中指定的路径一致。
  3. 依赖库版本:确保安装的 EasyOCR 和 PyTorch 版本兼容。

通过以上步骤,你应该能够成功使用本地下载的模型文件运行 EasyOCR,避免因网络问题导致的模型下载失败。