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