[jawsscripts] Re: OCRSnapObject Failing!

  • From: "Donald Marang" <donald.marang@xxxxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Sun, 31 Jan 2010 14:43:04 -0500

Thanks guys.

I have downloaded and installed both the Basic 2008 and C++ 2008 versions 
and installed the 2005 JAWS scripts which say they work for 2008 as well.  I 
plan to use Basic to learn the Studio environment.  If I need to develop 
this DLNA client, I would probably use C++ and join the blind programmers 
list.  I have not given up on stretching Windows Media Player 12, which 
almost sees all of my Internet content from the PlayOn software from 
PlayOn.tv and send the video to a DLNA display (PS3, WII, or DirecTV DVR) 
with it's PlayTo feature.

Don Marang

--------------------------------------------------
From: "Chris Hallsworth" <christopherh40@xxxxxxxxxxxxxx>
Sent: Sunday, January 31, 2010 12:43 PM
To: <jawsscripts@xxxxxxxxxxxxx>
Subject: [jawsscripts] Re: OCRSnapObject Failing!

> 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
>>>>> http://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
>>>> http://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
>>> http://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
> http://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 
http://www.freelists.org/list/jawsscripts

Other related posts: