Detectar en texto escaneado los grados necesarios para rotarlo y pasar OCR

Los procesos OCR requieren a ser posible de un trabajo previo. El trabajo previo es el que se encarga de auto-rotar imágenes escaneadas, pasarlas a una paleta de colores de 1 bit (blanco y negro), eliminar ruido, eliminar bordes, …

Em este post solo voy a comentar una forma de auto-rotar imágenes.

Instalamos Tesseract en Debian así:

# apt get install python-skimage python3-skimage pdftk
# apt-get install tesseract-ocr tesseract-ocr-spa

Obtenemos una página de un documento en castellano así:

$ wget "http://lavapies.linuxinthenight.com/libros/tecnicos/La_biblia_de_C-Spanish-MegageM.pdf"
$ pdftk La_biblia_de_C-Spanish-MegageM.pdf cat 09-09 output 9.pdf
$ convert -density 150 -trim 9.pdf -quality 100 -flatten -sharpen 0x1.0 9.png 

Hacemos la pasada OCR así:

$ tesseract 9.png 9.txt -l spa+eng

Obtendremos el texto en un archivo llamado 9.txt

Detectar si necesita el texto rotación

Pongamos el mismo ejemplo pero rotado -5 grados (lo he rotado con gimp):

Si nos bajamos este script en python vamos a poder detectar los grados de rotación que necesitamos para corregir un texto escaneado. El tema es que es muy importante a la hora de realizar un OCR disponer del texto bien recto sin rotaciones no necesarias.

$ cp -pRv 9.png skew-linedetection.png
$ wget "https://gist.githubusercontent.com/endolith/334196bac1cac45a4893/raw/248cc6da84d284a3d80b12b2adde29fb740acd01/rotation_spacing.py"

Si todo va bien tendríamos que poder usar convert (que viene en imagemagick) para rotar la imagen los grados necesarios.

próximo Publicación

Atrás Publicación

Dejar una contestacion

© 2018 [ MIERDA TV ]

Tema de Anders Norén