 |
AutoHotkey Community Let's help each other out
|
| View previous topic :: View next topic |
| Author |
Message |
m2
Joined: 13 Jul 2006 Posts: 4
|
Posted: Tue Jul 18, 2006 7:46 pm Post subject: Screengrab --> OCR -- text, GUI for options/results |
|
|
Extension/modification of the script "Capture From Screen To ASCII Art",
http://www.autohotkey.com/forum/viewtopic.php?t=2774
It also makes kind of asci, by converting image to normal text, using a external ocr program.
The script first grabs a screen image, saving this to a file in ppm format, only using AutohotKey. This format was quite simple to use and needed for the OCR program.
Then the script does some preprocessing of the image for better OCR result, this is done with the external program mkbitmap and potrace from http://potrace.sourceforge.net.
After preprocessing it run gocr (OCR) on the preprosecced image, producing a text (hopefully).
Lastly (optionally) the script shows the intermediate results in a information window. This can also be used to trim the processes by altering diffrent options in the "About and Options" window accessable from the tray menu. This step needs the convert program from ImageMagic to make the bmp image files for the GUI.
Left to be done is to make use of a ini file for storing options.
2007-07-19
Change: Programs paths for dependencies is declared in the beginning, and added running gocr thru cmd /c (seems needed on some systems???)
| Code: |
#Persistent
#SingleInstance force
Menu, Tray, Add ; separator
Menu, Tray, Add, About and Options, AboutOptions
/*
Format for PPM image file
P3
# example from the man page
4 4
15
0 0 0 0 0 0 0 0 0 15 0 15
0 0 0 0 15 7 0 0 0 0 0 0
0 0 0 0 0 0 0 15 7 0 0 0
15 0 15 0 0 0 0 0 0 0 0 0
*/
; Default GUI options
FileSave = 0
InfoWindow = 1
; Default variables
TmpDir =c:\tmp
TmpFile =image_out
ImageFormat =pgm
TmpImageFormat =ppm ; This is the only format supported
; Program paths for dependencies
convert_path =c:\bin
mkbitmap_path =c:\bin
potrace_path =c:\bin
gocr_path =c:\bin
tesseract_path =c:\bin
; Default processing options
; Image preprocessing
; mkbitmap
mkb_s =3 ; scale and interpolate
mkb_s1 =0 ;-2 linear scale
mkb_s2 =1 ;-3 cubic scale
mkb_i =0 ; -i invert
mkb_f =4 ; highpassfilter
mkb_t =0.45 ; threshold
; potrace
pre_potrace = 1 ; Run bitmap thru potrace
pot_z =minority ;how to resolve ambiguities in path decomposition
;black, white, right, left, minority|, majority, or random
pot_t =2 ;suppress speckles of up to this size (default 2)
pot_a =4 ;corner threshold parameter (default 1)
pot_n =0 ;-n turn off curve optimization
pot_O =0.2 ;curve optimization tolerance (default 0.2)
pot_u =10 ;Quantize output to 1/unit pixel
pot_k =0.5 ; Black/white cutof
pot_i =0 ;-i ; -i invert
pot_r =0 ; Rotate clock wise degree
; OCR
ocr_d =-1 ; -d, Dust size
ocr_s =0 ; -d, Spacewidth
ocr_m =32 ; -m, operational modes
ocr_n =0 ; -n, numbers only
; OCR/TEXT postprocessing
NoLineReturn = 1
; IniFile Functions
; To be done...
/*
IniRead,
Bla Bla
Return
IniWrite:
Bla bla
Return
*/
~^LButton:: ;press ctrl + Left mouse button (for "start")
stop=0
; ### Start, Get posisions to grab using window
; First method for positioning of screengrab
CoordMode, Mouse, Screen
CoordMode, Tooltip, Screen
MouseGetPos, scan_x_start, scan_y_start
currentXpos=%scan_x_start%
currentYpos=%scan_y_start%
ToolTip, ., scan_x_start, scan_y_start
WinSet, Transparent, 100, ahk_class tooltips_class32
Sleep, 800
loop
{
MouseGetPos, scan_x, scan_y
scan_x-=%currentXpos%
scan_y-=%currentYpos%
WinMove, ahk_class tooltips_class32, , , , %scan_x%, %scan_y%
GetKeyState, state, LButton
if state=d
{
if stop=0
{
tooltip
break
}
}
}
MouseGetPos, scan_x_end, scan_y_end
; ### StopGet posisions to grab unsing window
/*
; Alternate method for positioning of screengrab
^!e:: ;press ctrl-alt-e (for "end")
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen
MouseGetPos, scan_x_end, scan_y_end
*/
; Main scanning function
TrayTip, , Scanning...., , 1
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen
MouseGetPos, scan_x_end, scan_y_end
scan_current_y=%scan_y_start%
scan_current_x=%scan_x_start%
scan_current_line=
scan_current_line_source=
Loop
{
scan_current_x := scan_current_x + 1
if scan_current_x > %scan_x_end%
{
scan_current_line =%scan_current_line%`n
scan_current_line_source =%scan_current_line_source%`n
scan_current_y := scan_current_y + 1
if scan_current_y > %scan_y_end%
break
scan_current_x = %scan_x_start%
continue
}
PixelGetColor, found_color, %scan_current_x%, %scan_current_y%
StringMid, scan_rgb_r, found_color, 3, 2
StringMid, scan_rgb_g, found_color, 5, 2
StringMid, scan_rgb_b, found_color, 7, 2
scan_current_line_source =%scan_current_line_source% %found_color%
scan_rgb_r =0x%scan_rgb_r%
scan_rgb_g =0x%scan_rgb_g%
scan_rgb_b =0x%scan_rgb_b%
SetFormat, integer, d
scan_rgb_r -= 0
scan_rgb_g -= 0
scan_rgb_b -= 0
scan_rgb_r := " " . scan_rgb_r
scan_rgb_g := " " . scan_rgb_g
scan_rgb_b := " " . scan_rgb_b
StringRight, scan_rgb_r, scan_rgb_r, 3
StringRight, scan_rgb_g, scan_rgb_g, 3
StringRight, scan_rgb_b, scan_rgb_b, 3
found_color =%scan_rgb_r% %scan_rgb_g% %scan_rgb_b%
;scan_current_line=%scan_current_line% %found_color%
;/*
if scan_current_x > %scan_x_start%
{
scan_current_line=%scan_current_line% %found_color%
}
else
{
scan_current_line=%scan_current_line%%found_color%
}
;*/
}
; Add Header for image file
format :="P3"
comment :="#File made in Autohotkey"
hight :=scan_y_end - scan_y_start
width :=scan_x_end - scan_x_start
colors :="255"
file_data =
(
%format%
%comment%
%width%
%hight%
%colors%
%scan_current_line%
)
TrayTip, , Scan complete, , 1
sleep, 1000
TrayTip
GoSub, MainProcess
;MsgBox, The MainProcess subroutine has returned (it is finished).
return
MainProcess:
Gui Destroy
; File Save, function to allow save a file of the screengrab image
if FileSave = 1
{
FileSelectFile, SelectedFile, 16, , Save image, (*.ppm)
if SelectedFile =
{
MsgBox,,Save canceled, No image saved.
}
else
{
IfExist %SelectedFile%
{
FileDelete %SelectedFile%
if ErrorLevel <> 0
{
MsgBox The attempt to overwrite "%SelectedFile%" failed.
return
}
else
{
FileAppend, %file_data%, *%SelectedFile%
}
}
}
}
; End function, File Save
; Cleaning, Functions for cleaning up temporary files from previus grabs
IfExist %TmpDir%\%TmpFile%.ppm
{
FileDelete %TmpDir%\%TmpFile%.ppm
if ErrorLevel <> 0
{
MsgBox The attempt to remove "%TmpDir%\%TmpFile%.ppm" failed.
return
}
}
IfExist %TmpDir%\%TmpFile%.%ImageFormat%
{
FileDelete %TmpDir%\%TmpFile%.%ImageFormat%
if ErrorLevel <> 0
{
MsgBox The attempt to remove "%TmpDir%\%TmpFile%.%ImageFormat%" failed.
return
}
}
IfExist %TmpDir%\%TmpFile%.txt
{
FileDelete %TmpDir%\%TmpFile%.txt
if ErrorLevel <> 0
{
MsgBox The attempt to remove "%TmpDir%\%TmpFile%.txt" failed.
return
}
}
IfExist %TmpDir%\%TmpFile%.png
{
FileDelete %TmpDir%\%TmpFile%.png
if ErrorLevel <> 0
{
MsgBox The attempt to remove "%TmpDir%\%TmpFile%.png" failed.
return
}
}
; End Cleaning funtions
; Write, function to write the screengrab image to file
FileAppend, %file_data%, *%TmpDir%\%TmpFile%.ppm
; Start Preprocessing image
if mkb_i = 1
{
mkb_ii :="-i "
}
else
{
mkb_ii =
}
RunWait, %mkbitmap_path%\mkbitmap %mkb_ii% -f %mkb_f% -s %mkb_s% -t %mkb_t% -o %TmpFile%.pbm %TmpFile%.ppm, %TmpDir%, hide,
IfNotExist %TmpDir%\%TmpFile%.pbm
{
MsgBox,
(
Running mkbitmap "%TmpDir%\%TmpFile%.pbm" failed.
%mkbitmap_path%\mkbitmap %mkb_ii% -f %mkb_f% -s %mkb_s% -t %mkb_t% -o %TmpFile%.pbm %TmpFile%.ppm
)
return
}
If pre_potrace = 1
{
if pot_i = 1
{
pot_ii =-i
}
else
{
pot_ii =
}
if pot_n = 1
{
pot_nn :="-n "
}
else
{
pot_nn =
}
RunWait, cmd /c %potrace_path%\potrace %pot_ii%%pot_nn%-o %pot_o% -k %pot_k% -r %pot_r% -t %pot_t% -g -a %pot_a% -o %TmpFile%.pgm %TmpFile%.pbm, %TmpDir%, hide,
IfNotExist %TmpDir%\%TmpFile%.pgm
{
MsgBox,
(
Running potrace "%TmpDir%\%TmpFile%.pgm" failed.
cmd /c %potrace_path%\potrace %pot_ii%%pot_nn%-O %pot_o% -k %pot_k% -r %pot_r% -t %pot_t% -g -a %pot_a% -o %TmpFile%.pgm %TmpFile%.pbm
)
return
}
RunWait, cmd /c %convert_path%\convert %TmpFile%.pgm %TmpFile%.pbm, %TmpDir%, hide,
}
; End Preprocessing
; Start OCR processing
; Need to run gocr thru cmd, ???
RunWait, cmd /c %gocr_path%\gocr -i %TmpDir%\%TmpFile%.pbm -s %ocr_s% -d %ocr_d% -m %ocr_m% -n %ocr_n% -o %TmpFile%.txt, %TmpDir%, hide,
IfNotExist %TmpDir%\%TmpFile%.txt
{
MsgBox,
(
Running gocr "%TmpDir%\%TmpFile%.txt" failed.
cmd /c %gocr_path%\gocr %TmpDir%\%TmpFile%.pbm -s %ocr_s% -d %ocr_d% -m %ocr_m% -n %ocr_n% -o %TmpFile%.txt
)
return
}
FileRead, ocr_text, %TmpDir%\%TmpFile%.txt
; Test Tesseract, a other OCR
; Tesseract needs a BMP image
RunWait, cmd /c %convert_path%\convert %TmpFile%.pbm %TmpFile%.t.bmp, %TmpDir%, hide,
; Start OCR processing
RunWait, cmd /c %tesseract_path%\tesseract %TmpFile%.t.bmp %TmpFile%.t, %TmpDir%, hide,
IfNotExist %TmpDir%\%TmpFile%.t.txt
{
MsgBox,
(
Running gocr "%TmpDir%\%TmpFile%.t.txt" failed.
cmd /c %tesseract_path%\tesseract %TmpFile%.t.bmp output %TmpFile%.t.txt
)
return
}
FileRead, ocr_t_text, %TmpDir%\%TmpFile%.t.txt
; Save the raw OCR result into variable, could be useful
ocr_raw =%ocr_text%
ocr_t_raw =%ocr_t_text%
; End OCR processing
; Start OCR postprocessing
; Remove all CR+LF's from the contents
If NoLineReturn = 1
{
StringReplace, ocr_text, ocr_text, `r`n, , All
}
; Remove all underscors from the contents:
StringReplace, ocr_text, ocr_text, _, " ", All
; Remove all spaces from the contents:
StringReplace, ocr_text, ocr_text, %A_SPACE%, , All
; Remove all " from the contents:
StringReplace, ocr_text, ocr_text, """, "", All
/*
; Only allow characters in CharOK, not finished
CharOk := "abc"
Loop
{
IfInString, CharOK, `r`n
}
*/
; End OCR postprocessing
; Copy postprocessed text to clipboard
Clipboard =%ocr_text%
/*
; Functions to post the result into a search
#g::
Send, ^c
Run, http://www.google.com/search?q=%Clipboard%
Return
#w::
Send, ^c
Run, http://en.wikipedia.org/wiki/Special:Search?search=%Clipboard%
Return
*/
; Start GUI info Windows, function to show what we got, and how. For debugging mainly
If InfoWindow = 1
{
; Print size data of screengrab
Gui, +owner
Gui, font, s10, Verdana ; Set 10-point Verdana.
Gui, Add, Text,, The hight is %hight%, %scan_y_start% - %scan_y_end%.
Gui, Add, Text,, The width is %width%, %scan_x_start% - %scan_x_end%.
; Show asci of raw screengrab in hex and preprocessed to rgb
; Start Fix, Edit field seems to krasch if large
ImageArea := hight * width
hex =Grab to large to show all hex, show first 10000 chars ony
rgb =Grab to large to show all rgb, show first 10000 chars ony
If ImageArea < 1000
{
hex =%scan_current_line_source%
rgb =%scan_current_line%
gui, font,s2, Terminal
Gui, Add, Edit, w600 h100 -wrap +HScroll +VScroll, %hex%
Gui, Add, Edit, w600 h100 -wrap +HScroll +VScroll, %rgb%
}
else
{
StringLeft, hex_short, scan_current_line_source, 10000
StringLeft, rgb_short, scan_current_line, 10000
Gui, font, s10, Verdana ; Set 10-point Verdana.
Gui, Add, Text,, %hex%
gui, font,s2, Terminal
Gui, Add, Edit, w600 h100 -wrap +HScroll +VScroll, %hex_short%
Gui, font, s10, Verdana ; Set 10-point Verdana.
Gui, Add, Text,, %rgb%
gui, font,s2, Terminal
Gui, Add, Edit, w600 h100 -wrap +HScroll +VScroll, %rgb_short%
}
; End fix
Gui, font, s10, Verdana ; Set 10-point Verdana.
; Convert images to compatible format for GUI, adjust size if large screengrab
If ImageArea > 5000
{
; convert options to resize image
con_options =-resize 300x200
}
RunWait, cmd /c %convert_path%\convert %con_options% %TmpFile%.ppm %TmpFile%.bmp, %TmpDir%, hide,
RunWait, cmd /c %convert_path%\convert %con_options% %TmpFile%.pbm %TmpFile%_ocr.bmp, %TmpDir%, hide,
Gui, Add, Picture,, %TmpDir%\%TmpFile%.bmp
Gui, Add, Picture,, %TmpDir%\%TmpFile%_ocr.bmp
Gui, Add, Text,,
(
Text from OCR:
)
Gui, Add, Edit, xp+100, %Clipboard%
Gui, Add, Edit, xp+150, %ocr_t_text%
Gui, Add, Button, default, OK ; The label ButtonOK (if it exists) will be run when the button is pressed.
Gui, Add, Button, Default xp+60, Rerun
Gui, Show, AutoSize,
Return
ButtonOK:
GuiClose:
GuiEscape:
Gui Destroy
Return
ButtonRerun:
Gui, Submit
Gosub, MainProcess
Return
}
; End GUI info Window
/*
; Alternate method for positioning of screengrab
; press ctrl-alt-b (for "begin")
^!b::
CoordMode, Mouse, Screen
MouseGetPos, scan_x_start, scan_y_start
return
*/
; Clean up tmp
FileDelete %TmpDir%\%TmpFile%.ppm ; Color image, the raw screengrab picture
FileDelete %TmpDir%\%TmpFile%.pgm ; Gray
FileDelete %TmpDir%\%TmpFile%.pbm ; BW
FileDelete %TmpDir%\%TmpFile%.txt
Return
Return
AboutOptions:
Gui, 2:+owner ; Make the main window (Gui #1) the owner of the "about box" (Gui #2).
Gui +Disabled ; Disable main window.
Gui, font, s12, Verdana ; Set 10-point Verdana.
Gui, 2:Add, Text,, Tool for Text extraction from Screen grabs
Gui, 2:Add, Text,, Options:
Gui, 2:Add, Text, xs+10, Image Preprocessing
Gui, 2:Add, Text, xs+20, mkbitmap:
Gui, font, s10, Verdana ; Set 10-point Verdana.
Gui, 2:Add, Checkbox, vmkb_i checked%mkb_i% xs+25, Invert image
Gui, 2:Add, Edit, w35 vmkb_f xs+25, %mkb_f%
Gui, 2:Add, Text, xp+40, Highpassfilter
Gui, 2:Add, Edit, w35 vmkb_t xs+25, %mkb_t%
Gui, 2:Add, Text, xp+40, Threshold
Gui, 2:Add, Edit, w35 vmkb_s xs+25, %mkb_s%
Gui, 2:Add, Text, xp+40, Scale by integer factor
Gui, 2:Add, Radio, Group vmkb_s1 checked%mkb_s1% xs+25, Liner interpolation
Gui, 2:Add, radio, vmkb_s2 checked%mkb_s2% xs+25, Cubic interpolation
Gui, font, s12, Verdana ; Set 10-point Verdana.
Gui, 2:Add, Text, xs+20, potrace:
Gui, font, s10, Verdana ; Set 10-point Verdana.
Gui, 2:Add, Checkbox, vprepotrace checked%prepotrace% xs+25, Run thrue potrace
Gui, 2:Add, DropDownList, w100 vpot_z checked%pot_z% xs+25, black|white|right|left|minority||majority|random
Gui, 2:Add, Text, xp+110, Path decomposition
Gui, 2:Add, Edit, w35 vpot_t xs+25, %pot_t%
Gui, 2:Add, Text, xp+40, Speckles size to remove
Gui, 2:Add, Edit, w35 vpot_a xs+25, %pot_a%
Gui, 2:Add, Text, xp+40, Corner threshold
Gui, 2:Add, Checkbox, vpot_n checked%pot_n% xs+25, No curv optimization
Gui, 2:Add, Edit, w35 vpot_o xs+25, %pot_o%
Gui, 2:Add, Text, xp+40, Curve optimizion tolerance
Gui, 2:Add, Edit, w35 vpot_u xs+25, %pot_u%
Gui, 2:Add, Text, xp+40, Quantize output to 1/unit pixel
Gui, 2:Add, Edit, w35 vpot_k xs+25, %pot_k%
Gui, 2:Add, Text, xp+40, Black/white cutof
Gui, 2:Add, Checkbox, vpot_i checked%pot_i% xs+25, Invert image
Gui, 2:Add, Edit, w35 vpot_r xs+25, %pot_r%
Gui, 2:Add, Text, xp+40, Rotate image clockwise degree
Gui, 2:Add, Text,,
Gui, font, s12, Verdana ; Set 10-point Verdana.
Gui, 2:Add, Text, xs+10, OCR
Gui, font, s10, Verdana ; Set 10-point Verdana.
Gui, 2:Add, Text, xs+25, Operational Mode:
Gui, 2:Add, Edit, w35 vocr_m xp+100, %ocr_m%
Gui, 2:Add, Text, xp+40,
(
Operation mode:
4 Barcode
16 divide overlapping chars
32 context correction
64 char packing
)
Gui, 2:Add, Checkbox, vocr_n checked%ocr_n% xs+25, Only numbers
Gui, 2:Add, Text,,
Gui, 2:Add, Text, xs+10, OCR Postprocessing
Gui, 2:Add, Checkbox, vNoLineReturn checked%NoLineReturn% xs+25, Remove line returns.
Gui, 2:Add, Text,,
Gui, font, s12, Verdana ; Set 10-point Verdana.
Gui, 2:Add, Text, xs+10, GUI
Gui, font, s10, Verdana ; Set 10-point Verdana.
Gui, 2:Add, Checkbox, vFileSave checked%FileSave%, Allow FileSave
Gui, 2:Add, Checkbox, vInfoWindow checked%InfoWindow%, Show Info Window.
Gui, 2:Add, Text,,
Gui, 2:Add, Button, Default, OK
Gui, 2:Add, Button, Default xp+50, Save
Gui, 2:Add, Button, Default xp+50, Cancel
Gui, 2:Show, r x50
Return
2ButtonOK:
Gui, 1:-Disabled ; Re-enable the main window (must be done prior to the next step).
Gui, Submit
Gui Destroy ; Destroy the about box.
Return
2ButtonCancel:
Gui, 1:-Disabled ; Re-enable the main window (must be done prior to the next step).
Gui Destroy ; Destroy the about box.
Return
2ButtonSave:
Gui, Submit, NoHide
Gui, 1:-Disabled ; Re-enable the main window (must be done prior to the next step).
Return
#^r:: ; Reload this script
Reload
Return
|
Last edited by m2 on Thu Mar 15, 2007 11:02 pm; edited 1 time in total |
|
| Back to top |
|
 |
Not Logged In Guest
|
Posted: Wed Dec 06, 2006 9:27 pm Post subject: |
|
|
How fast is this code?
I'm thinking of using something like this to read some screen text during some game play and fire off key-events back to the game, but if it's too slow it won't work.
I guess I'll have to experiment, some.
Excellent work there, btw. It's almost exactly what I was looking for, so that'll make what I'm working on that much easier. |
|
| Back to top |
|
 |
Not Logged In Guest
|
Posted: Thu Dec 07, 2006 5:26 am Post subject: |
|
|
| Anyone else having problems with gocr? It doesn't appear to be working very reliably right now. |
|
| Back to top |
|
 |
Not Logged In Guest
|
Posted: Thu Dec 07, 2006 2:25 pm Post subject: |
|
|
Hehe. Never mind : Garbage in = garbage out.
gocr doesn't like negative images at all, but this can be corrected by proper use of invert image in the pre processing.
Nice script. |
|
| Back to top |
|
 |
gamadren
Joined: 28 Nov 2006 Posts: 8
|
Posted: Thu Dec 07, 2006 2:31 pm Post subject: |
|
|
Yes, I am having trouble with gocr also. Running gocr "path" failed.
I have tried all three versions of gocr including the one from May of 2005. |
|
| Back to top |
|
 |
n-l-i-d Guest
|
Posted: Thu Dec 07, 2006 7:22 pm Post subject: |
|
|
Here is another OCR demo script: ShowOCRUnderMouse.zip (contains all needed files). It does not 'optimize' the image before OCRing, but I found that this 'optimizing' (with potrace or netpbm) does not really generate much better results.
| Quote: | This script will show the current text under mouse
It uses:
- GDIplusWrapper.ahk (by PhiLho)
Converts screen portion to jpg
- djpeg.exe
Converts jpg to pnm
- gocr.exe
OCRs the pnm file
- cmdret.dll/cmdstub.exe
Gets the result from gocr.exe
(since gocr.exe is a 16-bit program, cmdret.dll needs the cmdstub.exe)
When the script is running, you can press the Escape key anytime to exit
|
Enjoy! |
|
| Back to top |
|
 |
Not Logged In Guest
|
Posted: Thu Dec 07, 2006 10:00 pm Post subject: |
|
|
| That's cool - does it work on DirectX ? |
|
| Back to top |
|
 |
Not Logged In Guest
|
Posted: Fri Dec 08, 2006 6:27 pm Post subject: |
|
|
The amusing thing about the "optimizing" in the original script is that it is never used.
This line does the gocr call
| Code: |
RunWait, cmd /q /c %gocr_path%\gocr -i %TmpDir%\%TmpFile%.pbm -s %ocr_d% -d %ocr_d% -m %ocr_m% -n %ocr_n% -o %TmpFile%.txt, %TmpDir%, hide,
|
and it is using only the .pbm file, which was generated by mkbitmap, and not by potrace, even if potrace was run.
BTW -
While the GDI thing is pretty cool, I am planning on doing something that compares if the image under a particular static area has changed and only run the conversion and OCR on changed images. The GDI program fires off mouse-move which, of course, will change minutely the area every time, and so that event works great for that purpose.
For my purpose, the only reason to trigger a new parse is if the image changes, and for that, I need to know what the last image was, which means that I suspect GDI libraries will be less efficient for that purpose than an image comparison algorithm.
Interesting stuff. |
|
| Back to top |
|
 |
Not Logged In Guest
|
Posted: Fri Dec 08, 2006 7:23 pm Post subject: |
|
|
I've also noticed that the original poster's color space is wrong when capturing the original image. If one opens the original image in an image editor like PSP or ImageMagick, the blues are coming out reds.
Admittedly this makes little difference when performing conversion to black and white for OCR, but it crops up when doing an image comparison with images that may have been captured through other means. |
|
| Back to top |
|
 |
Not Logged In Guest
|
Posted: Fri Dec 08, 2006 7:29 pm Post subject: |
|
|
| Quote: | | . If one opens the original image in an image editor like PSP or ImageMagick, the blues are coming out reds. |
Although, on further investigation, this could be because he is using the "rarer" P3 ppm format instead of the "raw" P6 ppm format, and maybe the display programs don't know the difference.. Hmm - I suppose I need to investigate further. |
|
| Back to top |
|
 |
m2
Joined: 13 Jul 2006 Posts: 4
|
Posted: Thu Mar 15, 2007 10:59 pm Post subject: P3 format, Tesseract |
|
|
It should be the P3 format, its documented in the file at the top
Wrong thought about the colors.
Done some testing with the Tesseract ORC engine, seems better than Gocr.
/m2 |
|
| Back to top |
|
 |
tinku99 Guest
|
Posted: Sat Jun 16, 2007 5:11 pm Post subject: gocr command failed error |
|
|
I get error:
"Running gocr "path\image_out.t.txt" failed.
cmd /c path\image_out.t.bmp output image_out.t.txt |
|
| Back to top |
|
 |
tinku99 Guest
|
Posted: Sat Jun 16, 2007 5:25 pm Post subject: gocr command failed error |
|
|
fixed it by replacing all occurences of .t. with .
in the script.
works nicely...
thanks. |
|
| Back to top |
|
 |
Murp|e
Joined: 12 Jan 2007 Posts: 531 Location: Norway
|
Posted: Sun Jun 17, 2007 10:17 pm Post subject: |
|
|
I've been wanting to do OCR stuff like this for a very long time and I would love to see this script in action. Unfortunately, it doesn't work and only shows:
"One or more CON code pages invalid for given keyboard codeCannot execute C:\DOCUME~1\Murple\DESKTOP\SHOWOCRUNDERMOUSE\GOCR.EXE"
Does anyone know how to work around this?
I am running a Norwegian keyboard on a iMac (running WinXP in BootCamp). |
|
| Back to top |
|
 |
n-l-i-d Guest
|
Posted: Mon Jun 18, 2007 8:12 am Post subject: |
|
|
According to Microsoft, this is "only" information.
| Quote: | One or more CON code pages invalid for given keyboard code
The KEYB command examined all prepared code pages, and has found that at least one code page is incompatible for your screen console device (CON). This is only information to let you know that your keyboard and screen console are working with different code pages. |
You could try changing the code page with the chcp command
| Quote: | To change the active code page to 850 (Multilingual), type:
chcp 850 |
You could try adding something like the following in the ShowOCRUnderMouse.ahk, Chr(20) should become an Enter (ASCII-Code 20)
| Code: |
AnEnter := Chr(20)
CMDs =
(LTrim Join
djpeg.exe -pnm -grayscale %fileNameDestJ% in.pnm
,cmdstub.exe chcp 850 %AnEnter% gocr.exe -i in.pnm
) |
not-tested |
|
| Back to top |
|
 |
|
|
You can post new topics in this forum You can reply to topics in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|