ocrad vs tesserac: La batalla de los OCR, descripción gráfica.

¿Así o más drama?.

Resulta que investigando para mejorar el producto de IFScore, que es una suite financiera, quiero automatizar la adquicisión de ciertos datos, es decir, quiero hacer reconocimiento de caracteres ópticos, y realmente para linux hay de dos sopas, OCRAD de GNU y TESSERACT de Google...

Round 1: Instalación.
Cuando me puse a instalar el OCRAD en mi opensuse 12.3, le dí cliketeclick y zaz! a bajar 925 paquetes y el tesseract solo baja 4...

Round 2: Con una imágen tomada con el cel (Galaxy S3)
Esta es la imagen utilizada como original, tomada con un Galaxy S3.


El ocrad usa imágenes pnm en escala de grises, entoces utilizamos la línea de comandos:
djpeg -greyscale -pnm 20130829_200939.jpg  | ocrad 
Y este es el resultado, bastante pobre por cierto.
 djpeg -greyscale -pnm 20130829_200939.jpg | ocrad   
 __...__P__. . '..' __. ,? _ `'- ._ . ..` _r '-  
 _ _' , ._ _ . _. _ .. ____ _ _ � . . _ _T ._ :__.;__ . ' _  
   
 __..-.r._/.__..'_ .. __ _ _ _ . _: _,.!_, _.___\___ ., j____'_i'_! _ .  
   
 ' , .! ._.- _ ` ,____ ..., r . . '. . : ._ __ .-._ ._i ___.'_!.  
 _ ^'  
 _.._P. __ . _ . . . ... _, . ._ `i __'.!.  
 _r.._.._.__...L_: . . . . _ ' . _ _. ... .-: ._.  
 . _ \r , , n . . _ _. ; . '`.___'. i!____�.___  
 _.:.:_._-t, __ _ . . . . .. .,_ .,. .! _ _ _ _  
 _ .r . / _ +_ ? , . _ _. _ ..i __'`__i i '? .  
 _ \ _ ..  
 \ `. ' . _ . r . . _ , :' ____ _j..! _' ! .  
 2/ _ _. . ,�. | l '_ _?. .  
 _ . ,__ _ . , ' . , . . , . . '^ __ _  
 . _. .__ _| _ . .. _ _. h. ._rf . .7 . '_ .: '  
 . \ .. n.. ._ .. . , _ _  
 . ` ._.. . , _? _ . ' . ~ .. - . . . . ..  
 _. .  
 _ _ .__? _  
 \ .  
   
 _ , . .  
 _ . \._ _: __.  
 . ' .. _ , .: ' .  
 _ ' _ __._. .  
 . _ _  
 \ _ .  
 . . : _.`..,  
 _. . _. :_ ?  
 _ . :. _ _ |  
   
 ... . ' _:.. .  
 . _ .  
 _ . .  
 r _ .. . _  
 n L __  
 ? . _ .._. , _  
 ._ . .: . ,t .,'  
 _ .. . _,  
 _ . - .  
 _. . . : . __ .  
 _ , ._ ,,_ .  
   
   
 L.Gb. l M r V . !i ,___. '  
   
 IC. # rlea Q lnez er nlco_ ._.. ______ '  
   
   
 ._. . . . ;.___`:i__ '  
   
 _S \ . ,_,r_`__-.. _  
 _. _.i_,_i__ . :_.  
   
 r_. . . . .___�_ Y_  
 . _ , , _,. �_ _  
 , _ ; . ,ij. tr..h__ .__..  
   
 . . \,_ _!_.S____ '  
 ? _  
   
   
 . _ ________. _  
   
   
 ..!`__. ____,j - .  
 _ . _ _ . _j! ',,__ r  
 _!_ _. .__.___ ,  
   
 . . . '_ _i _____.. .  
 , , _ _ .  
 . _ _' '.. . .: ___!___ _. . .  
   
 _- _ _ _'_____i._ S.'_. . .  
 _ . . .  
   
 _nYX_h_#4_d2|nt|OC__._._._. ...... "._ '_. _ :__.__ . ' : !  
   
 . . . ._' ! _- . _ r . .  
   
 _.j___TH|||___. r : _i n_ ._  
 ._|:__YaCaX_. ?. ..__ __ ...  
   
 _ . . . _. .._', .`..,'_. .__  
 . .,_ , . .. _ ,._ ___ .., _ _  
   
 ...._Z_nJ_|O__.|*.__'.i !_i_?_,.  
   
 ___. :_ _ . . . . . . .'_ ':_+ !.?.  
   
 :.T__3__|_9|_. _ .._ __. .'i_ __':_..  
 _ ! , _ . , ,_ |  
 _. , _ __ _ _ .r,  
 :';".\ ` . . . ___.'. , . _ \+!,  
 � , _. | . . _ . ___.. . _. '  
 _�__. . _^_i �._. _ _.,._ _  
 , n..%____ , _ . ' .'�. __ . .. .  
 ._,__.__! _ . . . ._i, _ _ ? . '  
   
 _)____:.`' '. .,. .  
 . . rf__ _ _ . , . , . . . . _  
 ___._. __. _?____. .._____ . ._.?_._�%.__. . . ` `< . _ _._.__ . .....__ : ._, . _.. .. , , __ _ . ' .' . ' .._ i. m__! _!_t_ _._._.  
 ' _ ' `' . .i.`___ m__ . ______ y�_ | _ . . __; .' . . . L' . _._ _ :. . . _ , . . , .n ._ .,  
 : . _ _ , ._. . . . .. ,: . . ,. . \ , . , _ ,.. ? . - , . . , _ . _ ;_  
 ___:_ri'_?:_ _ _.'.!__l _ _ !___:__ ___ .. " .._r. . _._.�_." ?..." ,.,� ...'._ .. ,_ ' ' ' . : _ . \_.. _.. ..___`; _i... '_ .!:!i'_.!____  
 . ___ '_ ._�..r`_.?__ ._.._.._hj_'.. . . . . .__ :__?. _. :_..=_, , , _.__ \ _. , ,.,.:_%!! ... _.. ,!_ .j___?  
 _ . ___ ,2' _ \_, . ._ _ ,. _ . _ ' . __ ?. '... r . _ __.: ._�='___.i'. ` . _ .._ ._ _ .._: . r_`i_.?_ _ �_j. _ ,__..j____�.__` .  
 _ ! . _ . ., . . _ . , , . . _ , , . _ . _ , . ,_ .  
 . ' . .` . _' __!___'__ . . ,?_j ? .._ __. __ ?.'__ ' .. ,__._ .?...._ ._`i: j , ..` _ .-r._. ._' .. _! ._ . .. ._..'.. _ '_.=__` .. ;_... . ...___, _ ,.  
 , _ . ' \ _! '_ i _j. D_`:r __ _ _. .i??-_. :_ `' _ ?.. . . ._ . _. ' __.. i ._ + :' .� _:. _%._! _._.._.:_____,_ __n_  
 _ _ _ ,___ . . _,__ i, .._� ' ,:� k;. . ' r_. . .. ! `..'_. ,_'j .' _ . ... ,,_ . :....` ...'_.'._`._.. . _._... .'._ . .. __ _ _ _ . _ . .\  
 ', . ,. , |, ` _ _ _ '.'_ \ \. _. ._._|_ ____ _W"  
 . , :_ ,,.. , .. . '._ . ._ .,_ T �.,_ _ _ . . . _ . . .. _ . _ . . _. _ , . . ,.  
 _ i_ ^ _ . _, i :_____i ___i.i.:'!_ . _._.._..!_ _i _`! . . _. .. _ _ .`_ . . ,_`_ _. _' .. '.:.. . ._._' :. _ ._?__.__._.. r rt i., \_._____'i _ .  
 .W_� _ . _ _ _..i _.: ' . '... _.. _? . .. . . . _ . . . . . . _ _ . , . _  
 . ' ____� . _ _ . _ | ._ %, !i.__. __'___ _ . '. _ . . ` . .. ? ' . _ ' '.. _. . . .. '._ . :_ . '._' r.. : _.. ' : M. .&.______  
 _ _  
 .._. . ' . ._ _. ! .. i _ - _ . . . ' . ` ' ' ._. .. _*. .; . |_ !__  
 _ . ._ _ _j_ _ _'. _ _ . . . \_ _ _ . ., _ _ _ ._  
   


Ahora probamos con el tesseract, que si acepta el jpeg como entrada, con el comando:
tesseract 20130829_200939.jpg out; cat out.txt
Y el resultado es impresionante, por cierto
 tesseract 20130829_200939.jpg out; cat out.txt  
 Tesseract Open Source OCR Engine v3.02.02 with Leptonica  
    
   
    
   
    
   
    
   
    
   
      
    
      
    
   
 Lic. Gabriela Martinez Verénica.  
 DIRECTOR COMERCIAL  
   
 Av. Xéchifl # 4262 Int. 10 Ce|. 333080807944.  
   
 Prados Tepeyac Nextel: 1659 3730  
 Zapopan, Jai. l.D. 92‘14“'30436  
 Tel. Of. 3121-9991 gabrielamtzéflhotmaflcomf  
   
 Yr’  
   
    
   

Round 3: Con una imágen tomada con la camara Lumix DMC-FX35
Wow, ¿verdad?, ok... supongamos que es por que la cámara del S3 es mala... entoces tomamos la foto con una Lumix de 10Mpx que toma unas fotos maravillosas, esta es la foto utilizada:

Resultado con OCRAD, igual de malo.
 djpeg -greyscale -pnm P1080712.JPG | ocrad   
 .. _ ._' � , . i_. __ ,_.___L_,___!._ � . '  
 _ ._ . ' ._ _._..| | _. _�___-_i__-  
 ____l. _ .i.' .. ,! _ .. . _ r" ..! ?___ _.!._ �___  
 , _ . _ ' ' , _; _ , .  
 .._.._.m' | 'n_ .. !_ �._' _ ;.. . _ . _ _. '^. , ... __ : � :  
 | h _ ' -. = :_ . _ . . _ _ ' _ __ . %. ; . .` | - __._._ .. ,: . ; . -  
 _ _ . !i. .. . _ _. . _'`_' , ' _ . .". . . _. ._ . , , _.'_ ?. .j,i__.__ S?. |_ _  
 , . . . '___._ .._ ' r _ . ___ _. _ ? : ._, ?-: . ...___?  
 - _ .. _ .._- :_!� _.i _ ^ ." . _ ' ' . . _ . . _ _  
 ... _ _ _ _ , . ! . ._ . ,_ n " _ _ _ _ . . - -  
 . \ .,- ' _ : . . .. - `  
 : -. . _ _ - . . _ . = . _ _ | _: _�t  
 - ; . T - | _ -| _ . . .i_-  
 | . - : L  
 . . .? r ' _ _  
 . \ . . '  
 , . . . _!.  
 - . .! ._: _, . .! . ._| .  
 . . . _..\ _  
 _ _  
 . . ` _ .|  
 - ' .|  
 _ !/|  
 _ . __ _?  
 | _ :.  
 , ._ __: _  
 _ -. �._ | .  
 _.| _ !:___ �_  
 . . __ ' _! .  
   
   
   
 tlE_ Cge__r___le_3 M_.__'2fr____ dBt�nlco, .. _.._. . ....: :__.____:___  
   
   
   
 l _ ( _ _ � t e ,_ |_ _ _ _ M _ y _. _r.f l n t . _.._ ., ._:: :-.:._!__:_  
   
 . : . . ' = . ...__| i  
 . . , - .!_ ... . : ._.  
 - ' ' , __ � : .�  
 _ _ _ . _ ' .  
 - ., _  
 _ _ . . . | _ . _  
 - . . . _ . � ___._._ _.  
   
 ...! . . . . . . != : .�:___;_  
   
   
 ___�_.__p _ n *___ tnt_ _O e.__ 23a`_'nsb_ ,' _. _ _"._._..._-__�____  
   
 _:___ #.nt.|_ _d_Q __OO . , _ :_... __:.__._  
   
 ____.'- :___r;_.:.% .' .... . _ | o Qa* _ *P$g__t , _ .. _ ��!-.___  
   
   
 _. .._j '.._ _'..:._'__..___| _'_ | qoarfolam_d_.hol_#i__. .,... r . .... ___'`_ M ;'.._______  
   
   
   
 �i_._ ______________.__:�:., __ ._._ _: :. . . ?. . _ . . - _ __ ____________ '! . ..%'.� _�-.._ '__'_' ' '' . "  
   
 ..?...�_ . _ . .__/i__C ,_. _,,  
 ,, , _. .___._, r,;;_.___ � ! ,._!_ _ __,_ i . _.. _ |_... , . , _  
 __., ._,'______ '__.._: ___________:__';__,;_, ._"'_"j .i.. ._. . .  
 rf  
 _,_i '_ ?.'! %_ . ... . "________rt____. .  
 _. ., r__.___ ? . ?.-._ _____`_:_? _  
 . '.i____ _ . . _| __ . , ____ ' _,:,,, _, , . , . , _, _ _ . _  
   
   

Y con tesseract, el resultado es:

  tesseract P1080712.JPG out; cat out.txt  
 Tesseract Open Source OCR Engine v3.02.02 with Leptonica  
    
    
    
     
   
 Llc::. (+i}c3ti)r|;3|c1 M(JlHf1(‘3l Vcfarénlco.  
 limit I: ah? i € JMl H(.JAl  
   
 Col. 333-606-79¢64  
   
 Noxm: 1659 3730  
   
 I.D.92"I4"‘30436 ~  
 aabrlolamtzéflhotmcfinom   
   
    
     
   
   

KO, fatality y todo lo demas: Conclusión.
Conclusión, los MPX de la cámara, no tienen un efecto tanto como la nitidez. El S3 toma una mejor foto y tiene mejores filtros que la cámara P&S. El OCRAD no solo es málo, es malísimo y no sirve, el tesseract es mucho más facil de que funcione. 




Editar videos con mencoder y Windows.

En días pasados publiqué una entrada sobre ferromodelismo y anexé un video, que en realidad fueron diferentes videos convertidos a uno solo. Dada la inexperiencia de grabar videos con el celular, cometí algunos errores como, no girar el celular y el video no quedó como yo quería.

Yo sé que usando software libre podía solucionar estos inconvenientes y realmente no quería invertir tanto tiempo investigando los comandos y opciones además de que existen infinidad de páginas web que explican como hacerlo con linux, es problable que la mayoría de las personas usen alguna versión de Windows, por lo que me enfoqué a buscar opciones para dicho sistema operativo.

Muchas referencias existen para usar "ffmpeg", pero me llamó la atención que podría usar "mencoder", haciendo una búsqueda de como editar/rotar los videos me encontré el siguiente artículo:


De allí tomé el comando para rotarlo:

"mencoder -vf rotate=1 -o OUTPUT.AVI -oac copy -ovc lavc INPUT.AVI
The -vf is for "Video Filter" and you can chain them, like -vf rotate=1,flip,scale=640:480 if you like. The -oac and -ovc are the audio and video outputs. In this case, I "copy" the audio over, and use the "libavcodecs" for the output."

Aunque no dí con opciones de como evitar editar el audio, sí me encontre con el siguiente problema: "libavcodec". El codec no venía con el paquete descargado de mencoder para windows, pero les digo que se puede descargar de aquí: 



Ya resuelta esa parte, ahora me doy cuenta de que el nuevo archivo se pixeleaba demasiado, una búsqueda nueva y encontré la solución:



PASAR DE MP4 A AVI
mencoder fichero.mp4 -of avi -oac lavc -ovc lavc -lavcopts codec=ac3:abitrate=192:vcodec=mpeg4:v4mv:keyint=100:vbitrate=2000 -o fichero.avi

PASAR DE MP4 A MPEG
mencoder fichero.mp4 -of mpeg -oac lavc -ovc lavc -lavcopts acodec=ac3:abitrate=192:vcodec=mpeg2video:vhq:keyint=32:vbitrate=2000 -ofps 25 -o fichero.mpeg


La clave fue usar "vbirate" y adios video pixeleado, un problema más resuelto. Ahora, ¿cómo hacer para que todos los videos fueran uno solo en lugar de tener doce o catorce videos?

Pues he aquí como:

mencoder video1 video2 video10 videoN -oac codecaudio -ovc codecvideo -of formato_de_salida -o video_resultante 


A pesar de todo lo anterior, seguía obteniendo un mensaje de error:

Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.


Buscando de nuevo, la solución apareció en: http://www.duncanelliot.com/blog/?p=94


Al comando/opciones anteriores agregamos: -force-avi-aspect 1.777


Termino por ahora con éste comando después de checar todo lo anterior:

mencoder.exe C:\Ferromodelismo\VID_20130804_131736.mp4 -of avi -vf rotate=1 -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=10000  -o ouput.avi -oac pcm -force-avi-aspect 1.777


El problema ahora es.... que al finalizar de subir a youtube, el video se ve estirado horizontalmente.

Tendremos que arreglar la resolución del video, así que da click aquí para conocer más sobre resoluciones, aspectos, etc.:

https://support.google.com/youtube/answer/1722171?hl=en



las sugerencias no me han funcionado para lo del aspecto agregando al comando usado: -xy 720.

El video una vez procesado por youtube, quedó pixeleado y estirado. De nueva cuenta a buscar y lo que sí me funcionó fue lo que explican en: 

http://www.calcmaster.net/youtube/upload-high-quality-youtube-videos-4x3/

Usar:  "expand=:::::4/3,scale=960:720"

Al fin, el comando quedó así:

mencoder.exe C:\Vids\my_vid.mp4 -of avi -vf rotate=1,expand=:::::4/3,scale=960:720 -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=10000  -o ouput.avi -oac pcm -force-avi-aspect 1.777

La salida del comando:

cm -force-avi-aspect 1.777
MEncoder Redxii-SVN-r36396-4.6.3 (C) 2000-2013 MPlayer Team
Compiled against FFmpeg version N-55218-g61af627
Build date: Sat Aug  3 23:33:29 EDT 2013

success: format: 0  data: 0x0 - 0x755803
libavformat version 55.13.101 (internal)
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng
VIDEO:  [H264]  1280x720  24bpp  30.000 fps  8290.0 kbps (1012.0 kbyte/s)
[V] filefmt:44  fourcc:0x34363248  size:1280x720  fps:30.000  ftime:=0.0333
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 55.20.100 (internal)
AUDIO: 48000 Hz, 1 ch, floatle, 96.1 kbit/6.26% (ratio: 12014->192000)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [scale w=960 h=720]
Opening video filter: [expand aspect=4/3]
Expand: -1 x -1, -1 ; -1, osd: 0, aspect: 1.333333, round: 1
Opening video filter: [rotate=1]
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
Movie-Aspect is undefined - no prescaling applied.
Specified x offset not supported for YUV, reduced to 492.
[swscaler @ 000000000223bf80]BICUBIC scaler, from yuv420p to yuv420p using MMXEX
T
videocodec: libavcodec (960x720 fourcc=3267706d [mpg2])
[swscaler @ 000000000223bf80]Warning: data is not aligned! This can lead to a sp
eedloss
Pos:   0.0s      1f (15%)  0.00fps Trem:   0min   0mb  A-V:0.000 [0:0]
Writing header...
ODML: vprp aspect is 16:9.
Writing header...
ODML: vprp aspect is 16:9.
Pos:   6.9s    208f (100%) 61.68fps Trem:   0min   6mb  A-V:0.024 [7013:768]

Skipping frame!
Pos:   6.9s    209f (100%) 61.91fps Trem:   0min   6mb  A-V:0.023 [7013:768]

Flushing video frames.
Writing index...
Writing header...
ODML: vprp aspect is 16:9.

Video stream: 7046.968 kbit/s  (880870 B/s)  size: 6107372 bytes  6.933 secs  20
9 frames

Audio stream:  768.000 kbit/s  (96000 B/s)  size: 677888 bytes  7.061 secs
Assertion v>0 && v<=(1 ? 32 : 16) failed at libavutil/mem.c:204

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.


Desafortunadamente no creo que pueda arreglar el último mensaje de error ya que el video procesado dura tan solo siete segundos y no es tan importante para mí.

Ahora, para mejorar el video:

mencoder.exe f2.mp4 -of avi -vf rotate=1,expand=:::::4/3,scale=1280:720  -ovc lavc
-lavcopts vcodec=mpeg2video:vbitrate=8000  -o f2.avi -oac pcm -force-avi-aspect 1.777


Para los videos que se grabaron con el celular en la posición correcta:

mencoder.exe f3.mp4 -of avi -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=8000 -o f3.avi -oac pcm


Para tener todos los videos en uno solo:

mencoder.exe -oac copy -ovc copy -idx -o Full_Video.avi  f1.avi  f2.avi  f3.avi


Debo mencionar que las "mejoras" a los videos que YouTube realizan no siempre dan los resultados esperados, por lo que es mejor dejar el video tal cual y lo han procesado ustedes.

Ojalá les sea de ayuda.

Módulos T-Trak, alternativa para maquetas modulares en escala N.


Les comparto un PDF con instrucciones de como crear las maquetas modulares que los integrantes del Club de Ferromodelismo "Escala N de M" estuvieron repartiendo durante la pasada Convención XVII Ferromodelismo en Guadalajara, Jalisco.


Y desde el grupo "El Lado N del Ferromodelismo" de Facebook nos comparten otro: 


Ojalá sean de ayuda y se animen a ser partícipes de éste bonito pasatiempo.

Convención XVII Ferromodelismo, Guadalajara Jalisco. 2 al 4 de Agosto, 2013.


Hoy tuvimos oportunidad de disfrutar de trenes a escala en la Convención XVII de Ferromodelismo, hubo una asistencia considerable tomando en cuenta que la afluencia de asistentes se incrementó posterior a la transmisión de un reportaje en un canal de televisión.

Nosotros tuvimos conocimiento previo del evento ya que un tío político es integrante de uno de los clubs que nos deleitaron con sus trenes a escala.

Los trenes se presentaron en escalas "N", "HO" y otros que se me escapan, por lo que los dejo con la secuencia de videos que pude tomar con el celular, ustedes disculparan que los videos no sean buenos pero yo no iba preparado para tomar videos/fotografía.


Ha sido tan impresionante el ver los trenes a escala que nos hemos quedado con la inquietud de crear las maquetas y empezar a juntar las máquinas, vagones, etc. El detalle, como con cualquier pasatiempo, la inversión y el espacio donde colocar. 
// Cookie consent