EasyOCR是一款支持多国语言,且轻量的文字识别模块,本文以一张真实的图片,带大家使用EasyOCR来做一个图片文字识别,并利用EasyOCR返回的坐标位置,将文字位置在图片中标注出来。

模块介绍

1、模块安装

pip3 install torch torchvision 
pip3 install easyocr

2、创建 Reader() 实例

reader = easyocr.Reader(),参数如下:

lang_list (list):识别语言代码,比如[‘ch_sim’,’en’]分别表示简体中文和英文。
gpu (bool, string, default = True) :是否使能GPU,只有安装了GPU版本才有效。
model_storage_directory (string, default = None) :模型存储位置。
download_enabled (bool, default = True):如果没有对应模型文件时,自动下载模型。
user_network_directory (bool, default = None) :用户自定义识别网络的路径。
recog_network (string, default = 'standard') :替代标准模型,使用自定义的识别网络。
detector (bool, default = True) :是否加载检测模型。
recognizer (bool, default = True) :是否加载识别模型。

代码示例

1、导入模块并识别图片

import easyocr
import time

reader = easyocr.Reader(['ch_sim', 'en'], gpu=False, model_storage_directory="model", download_enabled=True)  # False为不使用GPU
start_time = time.time()

info = reader.readtext(image='./data/road-poetry.png')
print('cpu need time', time.time() - start_time, 's')

print(info)

# [([[151, 101], [195, 101], [195, 149], [151, 149]], '西', 0.981630354704194), 
# ([[569, 71], [635, 71], [635, 131], [569, 131]], '东', 0.9986620851098884), 
# ([[218, 92], [535, 92], [535, 191], [218, 191]], '诗和远方路', 0.8088406067648788), 
# ([[137, 217], [177, 217], [177, 257], [137, 257]], 'W', 0.8304899668428476), 
# ([[209, 217], [525, 217], [525, 257], [209, 257]], 'Poetry And The Places Afar Rd。', 0.40033566345576044), 
# ([[571, 207], [611, 207], [611, 251], [571, 251]], 'C', 0.15532942943588068)]

2、存储识别结果

import pandas as pd

df = pd.DataFrame(columns=['x1', 'y1', 'x2', 'y2', 'text', 'proba'])

for i, item in enumerate(info):
    # 保留左上和右下坐标
    ((x1, y1), _, (x2, y2), _), text, prob = item
    df.loc[i] = [x1, y1, x2, y2, text, prob]
# 缓存结果,不重复识别
df.to_csv('./data/road-poetry.csv')

3、图片标记

import cv2

info = pd.read_csv('./data/road-poetry.csv', index_col=0)

# 加载图片
img = cv2.imread('./data/road-poetry.png')
for x1, y1, x2, y2, _, _ in info.values:
    # 画矩形
    cv2.rectangle(img, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)

cv2.imwrite('./data/road-poetry-marked.png', img)

本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/301