OCR en PowerBuilder 2022R3 (Parte 2)


Recientemente, tras la publicación de mi artículo sobre Cómo hacer OCR en PowerBuilder 2022R3 (C# OCR Tesserate), recibí un interesante contacto por parte de Oscar Francisco Hernández. Él me mostró una innovadora manera de capturar información de documentos utilizando una ventana emergente que permitía seleccionar una porción específica de texto para luego procesarla con OCR.

Durante nuestra conversación, me impresionó particularmente su CRM diseñado para el sector inmobiliario, el cual presentaba una interfaz muy atractiva. Gracias a las indicaciones proporcionadas por Oscar, pude desarrollar un ejemplo que deseo compartir hoy.

El concepto central de esta implementación es un visor de archivos que permite visualizar documentos en formatos como PDF, imágenes o archivos de texto plano. Utiliza un control WebBrowser y ofrece la funcionalidad de seleccionar un área específica para realizar OCR y extraer el texto correspondiente.

Imaginemos que abrimos un archivo PDF escaneado en nuestro ordenador, donde no es posible seleccionar el texto para copiar y pegar. Al presionar el botón OCR, se despliega una ventana emergente de color amarillo semitransparente que nos permite delimitar el área de interés en el texto. Al hacer doble clic, se nos presenta un cuadro de mensaje con el texto reconocido por OCR utilizando la librería Tesseract de C#.

Para lograr este efecto, he utilizado dos ejemplos de la página de Topwiz Software:

1- Bitmap: Este ejemplo demuestra cómo capturar un BMP de un control, ventana o pantalla, devolviendo la imagen como una variable blob que puede ser guardada en disco como un archivo .bmp. Esta función opcionalmente puede guardar la imagen en el portapapeles.

2- Resize Response: Este ejemplo permite que una ventana de tipo response sea redimensionable.

La combinación de estos ejemplos nos permite crear una ventana flotante para delimitar un área de texto y capturar la imagen resultante para su procesamiento con la librería Tesseract.

Además, he agregado un checkbox denominado "Clipboard", que al marcarlo evita la grabación previa de la imagen capturada en disco como un archivo BMP, dejándola en el portapapeles. Para procesar la imagen desde el portapapeles y convertirla en PNG, necesité desarrollar una librería en C# llamada ImageFromClipboard.dll. Aunque esta opción no es esencial para el OCR, me pareció una idea interesante para futuras exploraciones.

Como un extra, he incorporado un botón para realizar OCR en un PDF (limitado a la primera página). Para esto, he desarrollado la librería ImageFromPdf.dll para convertir el PDF en un archivo PNG, facilitando su procesamiento con Tesseract.

Finalmente, he incluido un botón exclusivo para la función de conversión de PDF a PNG, que puede resultar útil para diversos propósitos.

En fin, no me enrollo mas, y como siempre os dejo el enlace de descarga al proyecto PowerBuilder:

github.com/rasanfe/pbImageOCR

También os dejo el enlace de descarga del la solución C# con las tres librerías utilizadas en este ejemplo:

github.com/rasanfe/ImageOCR

Recordatorio: Para descargar el Proyecto PowerBuilder, usa el IDE de PowerBuilder, ya que hay que regenerar las los pbl. Si no sabes como hacerlo revisa este artículo:

Abrir un Repositorio de GitHub con PowerBuilder 2022



Comentarios