Python crawler series-start en el suelo (6)

Códigos de identificación

En el proceso de uso del rastreador de Python, puede haber situaciones en las que la interfaz deba iniciar sesión e ingresar el código de verificación de imagen.
En este caso, se puede reconocer manualmente, pero los pasos son demasiado engorrosos, por lo que se puede usar el reconocimiento automático.

En el artículo anterior, python crawler series-start into the ground (3) también mencionó la situación de encontrar el código de verificación cuando se
usa JavaScript para realizar el reconocimiento de imagen y texto: imagen de JavaScript a texto, texto a voz

Este artículo presenta principalmente pytesseractcómo reconocer el texto en la imagen captcha.

instalación de pytesseract

Use la pip install pytesseractdeclaración para instalar pytesseract

Introducción a pytesseract

Biblioteca de almohadas

No es suficiente instalar la biblioteca pytesseract, necesita instalar la biblioteca Pillow

  • Comando de instalación:pip install pillow
  • Importar py:from PIL import Image

Pillow es una versión alternativa de PIL. El paquete de software PIL proporciona funciones básicas de procesamiento de imágenes, tales como: cambio de tamaño de imagen, rotación de imágenes, conversión de formato de imagen, conversión de espacio de campo de color, mejora de imagen, procesamiento de histograma, interpolación y filtrado, etc. Aunque Pillow es un derivado de PIL, ahora se ha convertido en una biblioteca de procesamiento de imágenes más dinámica que la propia PIL. Se puede decir que Pillow reemplazó a PIL y lo empaquetó en una biblioteca de Python

Introducción de la almohada

tesseract-ocr

OCR (reconocimiento óptico de caracteres): el reconocimiento óptico de caracteres se refiere a dispositivos electrónicos (como escáneres o cámaras digitales) que verifican los caracteres impresos en papel, determinan su forma detectando patrones oscuros y brillantes y luego utilizan métodos de reconocimiento de caracteres para traducir las formas a la proceso de escritura por computadora.

Tesseract-ocr pertenece al motor de reconocimiento OCR de código abierto más antiguo. El motor Tesseract fue desarrollado originalmente por HP Labs y más tarde contribuyó a la industria del software de código abierto. Más tarde, Google lo mejoró, modificó y relanzó.

En la actualidad, la eficiencia de reconocimiento de tesseract-ocr puede ser menor, pero debido a que es de código abierto y se puede entrenar, tesseract-ocr todavía se usa ampliamente en el mercado.

Algunas direcciones de descarga recomendadas:

Metodo de instalacion

Haga clic en tesseract-ocr-w64-setup-v5.0.0-alpha.20200328.exe para instalar el programa y
Inserte la descripción de la imagen aquí
luego haga clic en Siguiente para completar la
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
instalación. Tesseract-OCR aparecerá en la carpeta del programa instalado.
Inserte la descripción de la imagen aquí
Agregue la carpeta Tesseract-OCR a la entorno del sistema En la ruta de la variable,
mi ubicación de instalación es G: \ python \ Tesseract-OCR, abra las variables de entorno del sistema y agregue la dirección a la ruta. Ingrese tesseract -v en cmd para ver si puede ver el número de versión de tesseract
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Prueba de código

Código de prueba simple

from PIL import Image
import pytesseract

image = Image.open('img/4.png')
result = pytesseract.image_to_string(image)

print(result)

Imagen a reconocer:
Inserte la descripción de la imagen aquí
resultado de ejecución:
Inserte la descripción de la imagen aquí



Eficiencia en el reconocimiento del código de verificación

Después de las pruebas, pytesseractla eficiencia de uso para identificar la imagen código de imagen es baja, y el conjunto puede ser mejor después del entrenamiento.
Referencia:

image = Image.open('img/5.png')
image = image.convert('L')   #转化为灰度图
threshold = 200    #设定的二值化阈值

table = []      #table是设定的一个表,下面的for循环可以理解为一个规则,小于阈值的,就设定为0,大于阈值的,就设定为1
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)

image = image.point(table,'1')  #对灰度图进行二值化处理,按照table的规则(也就是上面的for循环)
image.show()

result = pytesseract.image_to_string(image)

print(result)

Supongo que te gusta

Origin blog.csdn.net/qq_36171287/article/details/114634098
Recomendado
Clasificación