Obtención del texto (II)
Aunque en la entrada anterior usamos Pillow como programa de procesamiento de imágenes (con una función muy simple, por cierto: cargar la imagen), lo cierto es que lo normal es que se haga uso de OpenCV por su mayor potencia y funcionalidad, así que tendremos que incorporarlo a nuestro arsenal de recursos de automatización del acceso a textos.
Pero lo que quedó patente en la [entrada anterior] es que para lo que lo utilizamos en ese script (plenamente exitoso, por cierto), Pillow es más que suficiente, así que cuando la imagen no presente mayores dificultades y su tratamiento sea tan simple como el realizado, podemos trabajar perfectamente con esa biblioteca con total confianza.
Otra cosa es que el tratamiento a hacer de la imagen de referencia exija actuaciones de mayor complejidad. En ese caso es posible que OpenCV ofrezca mayor rendimiento, aunque sinceramente tengo mis dudas...
En todo caso lo mejor es que también practiquemos a extraer texto de imágenes usando OpenCV. Y a ello vamos tomando como referencia esta imagen, que en principio se presenta con mayor complejidad gráfica y también con mayor utilidad (obtener el texto de páginas escaneadas de cuentos o de libros de texto o de presentaciones ppt previamente convertidas en capturas de pantalla, por ejemplo)
import cv2import pytesseract#Asociar pytesseract a Tesseractpytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'# Cargar imagenimg = cv2.imread("img/img3.png")# Convertir la imagen a escala de grisesgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Aplicar threshold para convertir la imagen a binariothreshold_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]# Pasar la imagen al progama OCR pytesseracttext = pytesseract.image_to_string(threshold_img, lang='spa')# Imprimir el texto extraídoprint(text)
Puedes apreciar que sustituimos Pillow por OpenCV (import cv2), biblioteca que usamos para cargar la imagen (img = cv2.imread("img/img3.png")), pero también para tratarla a fin de facilitar el escaneo final...
- Primero la convertimos a escala de grises (gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY))
- Y después la convertimos a binario (threshold_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1])
El resto del script (no hay mucho más, pero es importante) es igual que en el script en el que usamos Pillow:
- La conexión entre Tesseract y pytesseract: pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
- El escaneo de la imagen (text = pytesseract.image_to_string(threshold_img, lang='spa'))
- Y la visualización del texto en pantalla (print(text))



No hay comentarios:
Publicar un comentario
Comenta esta entrada