Utilice opencv para reconocer texto

Hola

Primero instale pycharm, el lenguaje que uso es python y uso Tesseract, el tutorial de instalación Proceso de instalación de Tesseract OCR_blog-CSDN de Qingdu Xianke primero seleccione el sitio web Manual de usuario de Tesseract | tessdocDocumentación de Tesseract https://tesseract-ocr.github.io/tessdoc /Home.html Debido a que lo que necesito es Windows, elijo lo siguiente: puede organizar su propio contenido de descarga de acuerdo con su situación real: luego seleccione la versión: instálela usted mismo después de la descarga. El autor trabaja con pycharm y agregará ejercicios de proyecto de reconocimiento de texto más adelante... https://blog.csdn.net/qq_41059950/article/details/122890276 Primero cree una carpeta en pycharm, haga clic en configuración en Archivo

Aquí instalamos opencv-python y pytesseract. En este punto, las actividades preparatorias están básicamente completadas.

 Luego cree un archivo .py e inicie nuestro proyecto.

Supongo que tienes un poco de base opencv y base python.

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"
#添加的是你的tesseract的绝对路径,还要加上他的exe执行文件

 Lea una foto a continuación. Siempre que contenga letras y números en inglés, depende de usted. Esta es mía.

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"

img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
print(pytesseract.image_to_string(img))

cv2.imshow('img',img)
cv2.waitKey(0)

En primer lugar, puede utilizar la función pytesseract.image_to_string() para detectar las letras y números en inglés en la imagen.

 En segundo lugar, podemos imprimir las coordenadas de cada número o letra a través de la función pytesseract.image_to_boxes() para prepararnos para los pasos siguientes.

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"

img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#print(pytesseract.image_to_string(img))
print(pytesseract.image_to_boxes(img))


cv2.imshow('img',img)
cv2.waitKey(0)

 A continuación, primero complete la detección de caracteres. Necesitamos agregar una casilla a los ingleses y números reconocidos.

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"

img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#print(pytesseract.image_to_string(img))
#print(pytesseract.image_to_boxes(img))


### Detecting Characters  检测字符
Himg,Wimg,_ = img.shape
boxes = pytesseract.image_to_boxes(img)
for box in boxes.splitlines():
    #print(box)
    box = box.split(' ')
    #print(box)
    x,y,w,h = int(box[1]),int(box[2]),int(box[3]),int(box[4])#坐标是以左下角为中心,所以下面计算坐标要换算
    cv2.rectangle(img,(x,Himg-y),(w,Himg-h),(0,0,255),2)
    cv2.putText(img,box[0],(x,Himg-y+20),cv2.FONT_HERSHEY_DUPLEX,1,(0,50,255),2)


cv2.imshow('img',img)
cv2.waitKey(0)

Básicamente, este paso no es difícil, solo haz un escándalo por las coordenadas obtenidas.

 Por supuesto, no basta con completar esta operación, necesitamos reconocer palabras.

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"

img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#print(pytesseract.image_to_string(img))
#print(pytesseract.image_to_boxes(img))


### Detecting Words 检测单词
Himg,Wimg,_ = img.shape
boxes = pytesseract.image_to_data(img)
print(boxes)
for x,b in enumerate(boxes.splitlines()):#如果是单词被识别出来,会返回12个参数
    if x!=0:
        b = b.split()
        if len(b)==12:#判断是否返回的是单词,利用是否是十二个参数
            x,y,w,h = int(b[6]),int(b[7]),int(b[8]),int(b[9])
            cv2.rectangle(img, (x,y), (w+x, h+y), (0, 0, 255), 2)
            cv2.putText(img, b[11], (x,y), cv2.FONT_HERSHEY_DUPLEX, 1, (0, 50, 255), 2)


cv2.imshow('img',img)
cv2.waitKey(0)

 También puedes cambiar la configuración para elegir libremente lo que reconoces, por ejemplo, reconocer solo números, esto es lo que representan los parámetros específicos de ome y psm.

 

cong = r'--oem 3 --psm 6 outputbase digits'#添加命令
boxes = pytesseract.image_to_data(img,config=cong)

Simplemente agréguelos y modifíquelos en el programa anterior.

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"

img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#print(pytesseract.image_to_string(img))
#print(pytesseract.image_to_boxes(img))


### Detecting Words 检测单词
Himg,Wimg,_ = img.shape
cong = r'--oem 3 --psm 6 outputbase digits'#添加命令
boxes = pytesseract.image_to_data(img,config=cong)
print(boxes)
for x,b in enumerate(boxes.splitlines()):
    if x!=0:
        b = b.split()
        if len(b)==12:#判断是否返回的是单词,利用是否是十二个参数
            x,y,w,h = int(b[6]),int(b[7]),int(b[8]),int(b[9])
            cv2.rectangle(img, (x,y), (w+x, h+y), (0, 0, 255), 2)
            cv2.putText(img, b[11], (x,y), cv2.FONT_HERSHEY_DUPLEX, 1, (0, 50, 255), 2)


cv2.imshow('img',img)
cv2.waitKey(0)

 

Ok, eso es todo por este pequeño proyecto, nos vemos la próxima vez.

Supongo que te gusta

Origin blog.csdn.net/qq_41059950/article/details/122903147
Recomendado
Clasificación