Códigos de identificación
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 pytesseract
cómo reconocer el texto en la imagen captcha.
instalación de pytesseract
Use la pip install pytesseract
declaración para instalar 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
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:
- https://digi.bib.uni-mannheim.de/tesseract/
- https://gitee.com/mirrors/Tesseract-OCR?_from=gitee_search
- https://github.com/tesseract-ocr/tesseract
- https://download.csdn.net/download/qq_36171287/15713568
Metodo de instalacion
Haga clic en tesseract-ocr-w64-setup-v5.0.0-alpha.20200328.exe para instalar el programa y
luego haga clic en Siguiente para completar la
instalación. Tesseract-OCR aparecerá en la carpeta del programa instalado.
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
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:
resultado de ejecución:
Eficiencia en el reconocimiento del código de verificación
Después de las pruebas, pytesseract
la eficiencia de uso para identificar la imagen código de imagen es baja, y el conjunto puede ser mejor después del entrenamiento.
Referencia:
- https://blog.csdn.net/weixin_44750991/article/details/105660646
- https://www.cnblogs.com/fppblog/p/11804196.html
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)