[jawsscripts] Re: OCRSnapObject Failing!

  • From: Chris Hallsworth <christopherh40@xxxxxxxxxxxxxx>
  • To: jawsscripts@xxxxxxxxxxxxx
  • Date: Sun, 31 Jan 2010 17:43:53 +0000

It might not be a bad idea to download the full offline package, which 
is distributed as a DVD iso. It contains all the Express editions, as 
well as any required or optional components like MSDN Express and .Net 
Framework. Just a thought.

Chris Hallsworth
e-mail and Facebook: christopherh40@xxxxxxxxxxxxxx
MSN: ch9675@xxxxxxxxxxx
Skype: chrishallsworth7266

On 31/01/2010 17:11, Soronel Haetir wrote:
> Yes, Express is more than sufficient for what you are doing.  It may,
> however, require quite a few seperate downloads to get  the various
> libraries you need.  I know VS2008 can use through at least  .NET 3.5
> but forget if that's something you need to download or if it's
> included in the Express package.  Note that the .NET run-time you
> download from windows update is not the full development package,
> there is more you can find on msdn.microsoft.com.
>
> On 1/31/10, Donald Marang<donald.marang@xxxxxxxxx>  wrote:
>> Thanks!  I will give it a try as I play around with Visual Studio Express.
>> Is Express sucificent to write .Net applications?  I may want to write a
>> DLNA (Digital Living Network Alliance) application in the near future.
>>
>> Don Marang
>>
>> --------------------------------------------------
>> From: "Martin Slack"<m.g.slack@xxxxxxxxxxxx>
>> Sent: Sunday, January 31, 2010 4:48 AM
>> To:<jawsscripts@xxxxxxxxxxxxx>
>> Subject: [jawsscripts] Re: OCRSnapObject Failing!
>>
>>> Hi Don,
>>>
>>>   Here is a VBScript version of your example which works on my system,
>>> using
>>> MS Office Pro 2003 on XP, even with Office 2003 SP3 installed.
>>>
>>>   I've left a number of VBScript dialogs in place which you should be able
>>> to remove with no problem.
>>>
>>>   Martin...
>>>
>>> Option Explicit
>>>
>>> Const forWriting = 2
>>> Const forAppending = 8
>>>
>>> Dim inputFile, outputFile
>>> Dim strRecText
>>> Dim Doc1 ' MODI.Document
>>> Dim imageCounter
>>> Dim fso, path, Count
>>>
>>> inputFile = "biscuits.tif"
>>> strRecText = ""
>>>
>>> ' Assuming .tif file is in same folder as .vbs file
>>> Set fso = CreateObject("Scripting.FileSystemObject")
>>> Set inputFile = fso.GetFile("biscuits.tif")
>>> path = inputFile.ShortPath
>>>
>>> WScript.Echo path
>>>
>>> Set Doc1 = CreateObject ("MODI.Document")
>>> Doc1.Create(path)
>>> Doc1.OCR()  ' this will ocr all pages of a multi-page tiff file
>>> Doc1.Save() ' this will save the deskewed reoriented images, and the OCR
>>> text, back to the inputFile
>>>
>>> WScript.Echo "number of images: "&  Doc1.Images.Count
>>>
>>> For Each imageCounter In Doc1.Images
>>>     strRecText = strRecText&  imageCounter.Layout.Text
>>> Next
>>>
>>> WScript.Echo strRecText
>>>
>>> ' this will write, not append
>>> Set outputFile= fso.CreateTextFile("c:\testfile.txt", forWriting)
>>> outputFile.Write (strRecText)
>>> outputFile.Close
>>>
>>> WScript.Echo "Text saved to "&   "c:\testfile.txt"
>>>
>>> ' Clean up
>>> Doc1.Close()
>>> Set outputFile = Nothing
>>> Set Doc1 = Nothing
>>> Set inputFile = Nothing
>>> Set fso = Nothing
>>>
>>>
>>> ----- Original Message -----
>>> From: "Donald Marang"<donald.marang@xxxxxxxxx>
>>> To:<jawsscripts@xxxxxxxxxxxxx>
>>> Sent: Saturday, January 30, 2010 11:45 PM
>>> Subject: [jawsscripts] OCRSnapObject Failing!
>>>
>>>
>>>> I think I have the basic structure and JAWS Script statements I thought
>>>> should work.  Unfortunately it returns nothing!  How do you know if the
>>>> CreateObject function returns the expected object?  I attempt to retrieve
>>>> the number of images (pages), I would expect a value of one, but nothing
>>>> is
>>>> returned.  Could someone familiar with objects in JAWS look to see if I
>>>> made a dumb mistake?
>>>> I included a copy of a Visual Basic routine to OCR an image file and
>>>> writes the plain text to a file.  I simplified this as I converted it to
>>>> JAWS script code.  I would think a screenshot image would only be one
>>>> page.
>>>>
>>>> Following the example is my script.  Some of the necessary lines are
>>>> commented out until I ensure the active code is working.  I also
>>>> attempted
>>>> to use my constant, MODI_DLL_PATH, directly in the CreateObject
>>>> statements.  Both with single '\' and double '\\' characters.  Doing so
>>>> caused all three statements to fail.
>>>>
>>>> --- Start of example
>>>> Example from Wikipedia and MSDN for "MODI OCR" in Visual Basic .NET
>>>> </wiki/Visual_Basic_.NET>  follows:
>>>> You can program the MODI object model from any development tool that
>>>> supports
>>>> the Component Object Model (COM) by setting a reference to the Microsoft
>>>> Office
>>>> Document Imaging 11.0 (Office 2003) (or 12.0, which is Office 2007,  I
>>>> saw
>>>> somewhere else) Type Library.
>>>>
>>>> Dim inputFile As String = "C:\test\multipage.tif"
>>>> Dim strRecText As String = ""
>>>> Dim Doc1 As MODI.Document
>>>>
>>>> Doc1 = New MODI.Document
>>>> Doc1.Create(inputFile)
>>>> Doc1.OCR()  ' this will ocr all pages of a multi-page tiff file
>>>> Doc1.Save() ' this will save the deskewed reoriented images, and the OCR
>>>> text, back to the inputFile
>>>>
>>>> For imageCounter As Integer = 0 To (Doc1.Images.Count - 1) ' work your
>>>> way
>>>> through each page of results
>>>>     strRecText&= Doc1.Images(imageCounter).Layout.Text    ' this puts the
>>>> ocr results into a string
>>>> Next
>>>>
>>>> File.AppendAllText("C:\test\testmodi.txt", strRecText)     ' write the
>>>> OCR
>>>> file out to disk
>>>>
>>>> Doc1.Close() ' clean up
>>>> Doc1 = Nothing
>>>> --- End of example
>>>> Include "hjconst.jsh"
>>>>
>>>> Const
>>>> CRLF = "\13\10", ; Cariage return followed by line feed character
>>>> SCREEN_CAPTURE_FILE = "ScreenCapture.tif", ; Temp file placed in the JAWS
>>>> user settings directory
>>>> NIRCMD = "nircmd.exe", ; Command Line Utility from:
>>>> http://www.nirsoft.net/utils/nircmd.html
>>>> IMAGE_OCR = "MSPVIEW.EXE -o ",
>>>> IMAGE_READ = "MSPVIEW.EXE -r ",
>>>> ; Microsoft Office Document Imaging Viewer Control 11.0 or 12.0
>>>> (MDIVWCTL.DLL)
>>>> MODI_DLL_PATH = "\"C:\\Program Files\\Common Files\\Microsoft
>>>> Shared\\MOD\\MDIVWCTL.DLL\""
>>>>
>>>> Script OCRSnapshotObject ()
>>>> Var
>>>> String sImageFile,
>>>> String sCmdUtility,
>>>> String sExecute,
>>>> Object oNull,
>>>> Object oDoc,
>>>> Object oAllImages,
>>>> Object oImage,
>>>> Object oLayout,
>>>> Int iCount,
>>>> Int iChars,
>>>> Int iWords,
>>>> String sText
>>>>
>>>> ; Close virtual buffer if open
>>>> If UserBufferIsActive () Then
>>>> UserBufferDeactivate ()
>>>> EndIf
>>>> ; Set temporary image filename
>>>> Let sImageFile = GetJAWSSettingsDirectory () + "\\" + SCREEN_CAPTURE_FILE
>>>> Let sImageFile = "\"" + sImageFile  + "\"" ; Enclose in quotes in case
>>>> there is a space in the path
>>>> ; Set Command Line Utility path
>>>> Let sCmdUtility = GetJAWSSettingsDirectory () + "\\" + NIRCMD
>>>> Let sCmdUtility = "\"" + sCmdUtility + "\"" ; Enclose in quotes in case
>>>> there is a space in the path
>>>> ; Capture image of foreground active window
>>>> Let sExecute = sCmdUtility + " savescreenshotwin " + sImageFile
>>>> ; SayString ("Will perform save screenshot to file = \"" + sExecute +
>>>> "\"")
>>>> Run (sExecute)
>>>> SayMessage (OT_MESSAGE, "Screen image has been captured.  Please wait for
>>>> OCR conversion.")
>>>> Delay (10) ; make sure the file is not in use
>>>>
>>>> ; Run Microsoft Office Document Imageing Object Model to perform OCR
>>>> ; Not sure how to create / open / register ovject as performed by
>>>> Visual.Net Basic in the nnext two lines
>>>> ; Dim Doc1 As MODI.Document
>>>> ; Let oDoc = New MODI.Document
>>>>
>>>> ; Method used in Homer Jax
>>>> Let oDoc = CreateObjectEx ("MODI.Document", False)
>>>> If ! oDoc Then
>>>> SayMessage (OT_ERROR, "Could not create object using first call!")
>>>> Let oDoc = CreateObject ("MODI.Document")
>>>> EndIf
>>>> If ! oDoc Then
>>>> SayMessage (OT_ERROR, "Could not create objectusing second call!")
>>>> ; Running out of possibilities, try the last variety
>>>> Let oDoc = CreateObjectEx ("MODI.Document", True)
>>>> EndIf
>>>> If ! oDoc Then
>>>> SayMessage (OT_ERROR, "Could not create objectusing third call!")
>>>>     Return oNull
>>>> EndIf
>>>> SayString ("Document object created!")
>>>> oDoc.Create(sImageFile) ; loads the image into the object
>>>> ; SayString ("Image file =" + sImageFile)
>>>> Let oAllImages = oDoc.Images
>>>> Let iCount = oAllImages.Count
>>>> SayString ("pages in file = " + IntToString (iCount))
>>>> ; oDoc.OCR() ; this will ocr all pages of a multi-page tiff file
>>>> ; oDoc.Save() ; this will save the deskewed reoriented images, and the
>>>> OCR
>>>> text, back to the inputFile
>>>> ; Let oImage = oDoc.Images(0) ; first page of possible multi-page image
>>>> SayString ("OCR complete!")
>>>> ; Let oLayout = oImage.Layout ; OCR information
>>>> ; Let sText = oLayout.Text ; this puts the ocr results into a string
>>>> SayString ("text = \"" + sText + "\"")
>>>> ; Let iChars = oLayout.NumChars
>>>> ; Let iWords = oLayout.NumWords
>>>> SayMessage (OT_MESSAGE, "Screen image has been converted to text.")
>>>> SayMessage (OT_MESSAGE, "Converted " + IntToString (iChars) + "
>>>> characters, and " + IntToString (iWords) + " words")
>>>>
>>>> ; View converted text
>>>> SayMessage (OT_USER_BUFFER  , sText + CRLF + "Press Escape to close this
>>>> message.")
>>>> oDoc.Close() ; Clean up
>>>> Let oLayout = oNull
>>>> Let oImage =oNull
>>>> Let oAllImages = oNull
>>>> Let oDoc =oNull
>>>> EndScript
>>>>
>>>> Don Marang
>>>> __________
>>>> Visit and contribute to The JAWS Script Repository http://jawsscripts.com
>>>>
>>>> View the list's information and change your settings at
>>>> //www.freelists.org/list/jawsscripts
>>>>
>>>
>>> __________
>>> Visit and contribute to The JAWS Script Repository http://jawsscripts.com
>>>
>>> View the list's information and change your settings at
>>> //www.freelists.org/list/jawsscripts
>>>
>> __________
>> Visit and contribute to The JAWS Script Repository http://jawsscripts.com
>>
>> View the list's information and change your settings at
>> //www.freelists.org/list/jawsscripts
>>
>>
>
>
__________ 
Visit and contribute to The JAWS Script Repository http://jawsscripts.com

View the list's information and change your settings at 
//www.freelists.org/list/jawsscripts

Other related posts: