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