rony2006 Posted April 21, 2016 Share Posted April 21, 2016 Hello, I have the following working script: expandcollapse popup#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=ocr.Exe #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;r-OCR ;By: ronriel ;updated oct. 20, 2008 ;autoit-v3.2.12.1 ;Tested Windows XP SP2 with MS Office 2007 #Include <ScreenCapture.au3> #include <WindowsConstants.au3> #Include <Misc.au3> _Singleton("script",0) Opt("GUIOnEventMode",1) Opt("WinTitleMatchMode", 4) Opt("TrayOnEventMode",1) Opt("TrayMenuMode",1) HotKeySet("!q","ShowWin") Local $err = ObjEvent("AutoIt.Error","Error") $GUI = GUICreate("", 90, 40,-1,-1,0x80880000,$WS_EX_TOOLWINDOW) WinSetTrans($GUI,'',200) $B1 = GUICtrlCreateButton("Read &Region", 0, 0, 90, 20) GUICtrlSetBkColor(-1,0xe6e6fa) GUICtrlSetOnEvent(-1,"Capture") $B2 = GUICtrlCreateButton("Read &File", 0, 20, 90, 20) GUICtrlSetBkColor(-1,0xe6e6fa) GUICtrlSetOnEvent(-1,"Capture") GUISetState(@SW_SHOW) $GUI2 = GUICreate("", 0 , 0 , 0, 0, BitOR($WS_POPUP,$WS_BORDER), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW)) GUISetBkColor(0xe6e6fa,$GUI2) WinSetTrans($GUI2,'',60) GUISetState(@SW_HIDE) $GUI3 = GUICreate("", 0 , 0 , 0,0 , BitOR($WS_POPUP,$WS_BORDER), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW)) GUISetBkColor(0xFF0000,$GUI3) GUISetState(@SW_HIDE) TrayCreateItem("Info") TrayItemSetOnEvent(-1,'Ex') $Exit = TrayCreateItem("Exit") TrayItemSetOnEvent(-1,'Ex') TraySetState() ControlClick($GUI,'',$B2) Func ShowWin() If BitAND(WinGetState($GUI),2) Then GUISetState(@SW_HIDE,$GUI) Else $Mpos = MouseGetPos() WinMove($GUI,'',$Mpos[0]-45,$Mpos[1]-10) GUISetState(@SW_SHOW,$GUI) EndIf EndFunc Func Capture() Local $Image = @ScriptDir&"\ScreenCapture.png", $v = 0 If @GUI_CtrlId = $B1 Then GUISetState(@SW_HIDE,$GUI) GUISetState(@SW_SHOW,$GUI3) Do Sleep(10) ToolTip("Read Region") $c = MouseGetPos() WinMove($GUI3,"",$c[0]-2.5,$c[1]-2.5,5,5) If _IsPressed(01) Then ToolTip('') $C1 = MouseGetPos() Do Sleep(10) $C2 = MouseGetPos() If $C2[0] <> $C1[0] And $C2[1] <> $C1[1] Then GUISetState(@SW_SHOW,$GUI2) EndIf If $C1[0] < $C2[0] Then $X = $C1[0] $W = $C2[0] - $C1[0] Else $X = $C2[0] $W = $C1[0] - $C2[0] EndIf If $C1[1] < $C2[1] Then $Y = $C1[1] $H = $C2[1] - $C1[1] Else $Y = $C2[1] $H = $C1[1] - $C2[1] EndIf WinMove($GUI2,"",$X,$Y,$W,$H) WinMove($GUI3,"",$c2[0]-2.5,$c2[1]-2.5,5,5) Until Not _IsPressed(01) $v = 1 EndIf Until $v = 1 GUISetState(@SW_HIDE,$GUI2) GUISetState(@SW_HIDE,$GUI3) _ScreenCapture_Capture($Image,$x,$y,$x+$W,$y+$h,False) ElseIf @GUI_CtrlId = $B2 Then GUISetState(@SW_HIDE,$GUI) $Image = @ScriptDir & "\res\effstk.jpg" if @error then Return EndIf $OCR = OCR($Image) $OCR1= StringRegExpReplace($OCR, "[^[:digit:]]", "") If @error then Return ClipPut($OCR1) ;msgbox (0, "ocr", $OCR1) Exit EndFunc Func OCR($Image) Local $y = 0, $string $miDoc = ObjCreate("MODI.Document") $miDoc.Create($Image) If @error Then Return SetError(1) $miDoc.Ocr(9, True, True);language is English If @error Then Exit ClipPut("Error!") Return SetError(1) EndIf For $Word In $miDoc.Images(0).Layout.Words $delim = ' ' If $miDoc.Images(0).Layout.Words($y).Rects(0).Bottom < $miDoc.Images(0).Layout.Words($y+1).Rects(0).Top Then $delim = @CRLF $string &= $Word.text & $delim $y += 1 Next Return StringTrimRight($string,1) EndFunc Func Error() Endfunc Func Ex() If @TRAY_ID = $Exit Then Exit Else MsgBox(0,"Info", "Press ALT+Q to start."&@CRLF&@CRLF&"r-OCR"&@CRLF&"By: ronriel (ronriel@yahoo.com)") EndIf EndFunc While 2 Sleep(100000) WEnd I want to include this script in a main script, and when I need to run the script from above to just "call" the function of it. I tried to put Func blabla() Endfunc in the script from above and then blabla() in the main script but is not working. My main script is made like: #include script from above Gui While 1 code blabla() Wend How I can do this please? Link to comment Share on other sites More sharing options...
Bert Posted April 21, 2016 Share Posted April 21, 2016 make the first script an exe and have the second one call the exe as needed. The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
rony2006 Posted April 21, 2016 Author Share Posted April 21, 2016 This is the metode that I use now but is a little lag there. And i cannot see the time of execution of the full script, from begining to end. Link to comment Share on other sites More sharing options...
rony2006 Posted April 21, 2016 Author Share Posted April 21, 2016 I only want to OCR a image from a directory and get the text in a variable. Any help please? Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted April 21, 2016 Moderators Share Posted April 21, 2016 rony2006, Recast the script so that it reads as follows: ; Includes ; Opts & HotKeys ; Variable declarations Main() ; Choose a suitable name for the function to use here Func Main() ; The working code here EndFunc ; And then the helper functions here Func ##### EndFunc Now you can include the file in your other scripts and simply call the function - which is how the various standard include files and all of the UDFs work. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
rony2006 Posted April 21, 2016 Author Share Posted April 21, 2016 @Melba23 I noticed that I already have a working function with the name "Capture ()". I think this is the working code. So I included ocr.au3 in my main.au3 but each time I run main.au3, only the ocr.au3 is runned (without calling any function from it). My include section from main looks like: #include <ImageSearch.au3> #include <MsgBoxConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ScreenCapture.au3> #Include <Misc.au3> #Include <ocr.au3> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now