Use las bibliotecas opencv y tesseract de python para identificar el chino en el área especificada en la imagen

Use las bibliotecas opencv y tesseract de python para identificar el chino en el área especificada en la imagen

Declaración de necesidades

La imagen contiene mucho chino. El reconocimiento de imagen completa de Tesseract es el reconocimiento línea por línea, y no se pueden obtener resultados satisfactorios. Es necesario reconocer el chino en el área especificada.

Plan de IMPLEMENTACION

Podemos utilizar el método de especificar el ROI (región de interés) para identificar a los chinos en el ROI. La biblioteca opencv de Python y la biblioteca tesseract son muy convenientes de instalar y usar, y la documentación es relativamente completa, así que elegí usar las bibliotecas opencv y tesseract de python para la identificación.

Documento de referencia:
https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html#image-roi
https://pypi.org/project/pytesseract/

Código de muestra

# coding: utf-8
import cv2
import pytesseract

# 设置tesseract可执行程序及中文字库的路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract'
tessdata_dir_config = r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"'

img = cv2.imread("E:\\workspace\\cvimg\\1.png")

print img.shape
height, width, _ = img.shape

# 设定图片区域,例如取图片顶部以下60行、从右往左数第5-125列的区域
img_roi = img[0:60, width-125:width-5]

text = pytesseract.image_to_string(img_roi, lang='chi_sim', config=tessdata_dir_config)
print text

# 由于图片上字符间距的原因,识别出的文本中可能会包含空格,使用下列语句去除空格
for r in text.splitlines():
    print r.replace(" ", "")

cv2.namedWindow("roi")
cv2.imshow("roi", img_roi)
cv2.waitKey(0)
cv2.destroyAllWindow()

Supongo que te gusta

Origin blog.csdn.net/huzhenwei/article/details/83508524
Recomendado
Clasificación