2015-09-18 1 views
1
#include <Constants.au3> 
#include <ScreenCapture.au3> 
#Include <Misc.au3> 
#include <Array.au3> 
#include <GDIPlus.au3> 


$image = @MyDocumentsDir & "\aaa_teste.jpg" 
ConsoleWrite(OCR($image)) 


Func OCR($Image) 
    Local $miDoc, $Doc 
    Local $str 
    Local $oWord 
    Local $sArray[500] 
    Local $as_Text = "" 


    $miDoc = ObjCreate("MODI.Document") 
    ConsoleWrite("ObjCreate - The error value is: " & @error & @CRLF) 
    $miDoc.Create(@TempDir & '\OCR_ImageResize.jpg') 
    ConsoleWrite("Create - The error value is: " & @error & @CRLF) 
    $miDoc.Ocr(9, False, False) 
    ConsoleWrite("Ocr - The error value is: " & @error & @CRLF) 

    If $Error = False Then 
     $i = 0 
     For $oWord in $miDoc.Images(0).Layout.Words 

      $str = $str & $oWord.text & @CrLf 
       ConsoleWrite($oWord.text & @CRLF) 
      $sArray [$i] = $oWord.text 
      $i += 1 

     Next 

     $as_Text = _ArrayToString($sArray," ",0) 
     $as_Text = StringReplace($as_Text, " ", "", 0) 

    ElseIf $Error = True Then 

     $Error = False 
    EndIf 

    $miDoc.Close(False) 
    Return $as_Text 

EndFunc 

`m essayant lu un texte à partir d'un screencapture L'erreur est:AutoIt erreur de modi.document variable doit être de type "objet"

« C: \ Users \ jose.barbosaneto \ Desktop \ TESTE .au3" (23): ==> variable doit être de type "objet" .: $ miDoc.Create (@TempDir & '\ OCR_ImageResize.jpg') miDoc de $^eRREUR

S'il vous plaît aidez-moi

Répondre

1

Le seul inconvénient de la bibliothèque MODI est qu'elle repose à 100% sur MS Office. Donc si vous n'avez pas installé la bonne version, il ne trouvera pas l'objet COM nécessaire.

Vérifiez la version d'Office que vous avez installée et voyez si MODI s'y trouve. Allez dans Programmes de désinstallation et cliquez sur Modifier/Réparer sur la version MS Office que vous avez. De là, vous pouvez vérifier si les documents MODI sont installés.

Edit: Installer MDI fichiers TIFF Converter et SharePoint Designer à partir de ce lien: https://support.microsoft.com/en-us/kb/982760 Après les installer aller> Désinstaller un programme> MS Office SharePoint Designer 2007> Faites un clic droit dessus et sélectionnez Modifier> sélectionnez Ajouter ou supprimer des fonctionnalités . De là, dans le menu, vous trouverez l'option Outils de bureau. Développez-le. Puis cliquez sur les petites flèches sur MODI (Microsoft Office Document Imaging) et sélectionnez "Exécuter tout depuis mon ordinateur".

Et vous êtes prêt à partir!

Edit2: Voici un exemple testé et fonctionnel.

#include <GUIConstants.au3> 
#include <Array.au3> 

Dim $miDoc, $Doc 
Dim $str 
Dim $oWord 
Dim $sArray[500] 

Const $miLANG_CZECH = 5 
Const $miLANG_DANISH = 6 
Const $miLANG_DUTCH = 19 
Const $miLANG_ENGLISH = 9 
Const $miLANG_FINNISH = 11 
Const $miLANG_FRENCH = 12 
Const $miLANG_GERMAN = 7 
Const $miLANG_GREEK = 8 
Const $miLANG_HUNGARIAN = 14 
Const $miLANG_ITALIAN = 16 
Const $miLANG_JAPANESE = 17 
Const $miLANG_KOREAN = 18 
Const $miLANG_NORWEGIAN = 20 
Const $miLANG_POLISH = 21 
Const $miLANG_PORTUGUESE = 22 
Const $miLANG_RUSSIAN = 25 
Const $miLANG_SPANISH = 10 
Const $miLANG_SWEDISH = 29 
Const $miLANG_TURKISH = 31 
Const $miLANG_SYSDEFAULT = 2048 
Const $miLANG_CHINESE_SIMPLIFIED = 2052 
Const $miLANG_CHINESE_TRADITIONAL = 1028 

Local $ImagePath = @DesktopDir & "\Untitled.png" ; you can choose .tif format if you also want 
; Initialize error handler 
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") 

$miDoc = ObjCreate("MODI.Document") 
$miDocView = ObjCreate("MiDocViewer.MiDocView") 

$Viewer = GUICreate("Embedded MODI Viewer", 640, 580, (@DesktopWidth - 640)/2, (@DesktopHeight - 580)/2, _ 
     $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS) 


;Creates an ActiveX Control in the GUI. 
$GUIActiveX = GUICtrlCreateObj($miDocView, -1, -1, 640, 580) 
GUICtrlSetResizing($Viewer, $GUI_DOCKAUTO) 


$miDoc.Create($ImagePath) 
$miDoc.Ocr($miLANG_ENGLISH, True, False) 

; Show GUI 
GUISetState() 

$miDocView.Document = $miDoc 
$miDocView.SetScale(0.75, 0.75) 


While 1 
    $msg = GUIGetMsg() 

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop 
WEnd 



$i = 0 

For $oWord In $miDoc.Images(0).Layout.Words 

    $str = $str & $oWord.text & @CRLF 
    ConsoleWrite($oWord.text & @CRLF) 
    $sArray[$i] = $oWord.text 
    $i += 1 
Next 

_ArrayDisplay($sArray, "OCR Result") 



;MsgBox(0,"",$miDocView.FileName) 

;------------------------------ This is a COM Error handler -------------------------------- 
Func MyErrFunc() 
    $HexNumber = Hex($oMyError.number, 8) 
    MsgBox(0, "COM Error Test", "We intercepted a COM Error !" & @CRLF & @CRLF & _ 
      "err.description is: " & @TAB & $oMyError.description & @CRLF & _ 
      "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ 
      "err.number is: " & @TAB & $HexNumber & @CRLF & _ 
      "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ 
      "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ 
      "err.source is: " & @TAB & $oMyError.source & @CRLF & _ 
      "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ 
      "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ 
      ) 
    SetError(1) ; to check for after this function returns 
EndFunc ;==>MyErrFunc 
+0

Merci pour l'aide, mais j'ai résolu mon problème. J'ai eu un bureau 2013 que je l'ai fait un déclassement au bureau 2007 – ZeNeto