Leadtools.Forms.Ocr Namespace > IOcrDocument Interface > LoadZones Method : LoadZones(String) Method |
'Usage Dim instance As IOcrDocument Dim fileName As String instance.LoadZones(fileName)
function Leadtools.Forms.Ocr.IOcrDocument.LoadZones(String)( fileName )
To save and load the zones of OCR pages, you can use one of these methods:
IOcrPage.SaveZones(fileName) or IOcrPage.SaveZones(stream): These methods save the zones of a particular OCR page to a single-page disk file or stream. These methods will not use the page number, and hence, the file or stream will contain zones that are not tied to any particular page and can be loaded back into any OCR page regardless of its number. To load these zones back into any OCR page, use IOcrPage.LoadZones(fileName) or IOcrPage.LoadZones(stream).
IOcrPage.SaveZones(fileName, pageNumber) or IOcrPage.SaveZones(stream, pageNumber): These methods save the zones of a particular OCR page to a multi-page disk file or stream. If the file or stream exist previously, these methods will replace the zones specified in 'pageNumber' with the zones of the IOcrPage. If the file or stream does not contain zones for the specified page number, the zones will be appended to the file or stream at the end and can be loaded later using IOcrPage.LoadZones(fileName, pageNumber) or IOcrPage.LoadZones(stream, pageNumber).
IOcrDocument.SaveZones(fileName) or IOcrDocument.SaveZones(stream): These methods save the zones of all the OCR pages in a document to a multi-page disk file or stream. The saved data will contain the page number of the zones. To load these zones, you can either use IOcrDocument.LoadZones(fileName) or IOcrDocument.LoadZones(stream) to load the zones from a multi-page file or stream back into a multi-page OCR document. Or IOcrPage.LoadZones(fileName, pageNumber) and IOcrPage.LoadZones(stream, pageNumber) to load any single page from a multi-page OCR document into a particular OCR page.
Note on loading zones from a multi-page zone file: If the file does not contain zones data with the correct page number, the engine will not load any zones for this page. After the method returns, any OCR page that did not have zones data will contain zero zones. (the IOcrPage.Zones property conatins 0 items). You can then use IOcrPage.AutoZone if required to re-zone this page.
Use this method to load the zones previously saved into a multi-page zones disk file with the IOcrDocument.SaveZones(fileName) method.
The zones of this page will first be cleared prior to loading the new items.
After this method finishes, you can access the loaded zones in the IOcrPage.Zones property.
To load and save the zones to a .NET stream, use IOcrDocument.SaveZones(stream), IOcrDocument.LoadZones(stream) and IOcrPage.LoadZones(stream, pageNumber).
Saving zones to an external file or a stream could be useful when you are processing forms. For example, you can load one of the forms and automatically find the zones inside it using AutoZone, if the automatic zone detection was not 100 percent satisfactory, you can update the zones in the IOcrPage.Zones collection manually and then save the result with IOcrDocument.SaveZones(fileName). Once the zones are saved. You can now process all similar forms in the following manner:
Imports Leadtools Imports Leadtools.Codecs Imports Leadtools.Forms.Ocr Imports Leadtools.Forms Imports Leadtools.WinForms Imports Leadtools.Drawing Private Shared Sub LoadSaveZonesExample() Dim engineType As OcrEngineType = OcrEngineType.Advantage Using ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(engineType, False) ocrEngine.Startup(Nothing, Nothing, Nothing, LEAD_VARS.OcrAdvantageRuntimeDir) Using ocrDocument As IOcrDocument = ocrEngine.DocumentManager.CreateDocument() ' Add 2 pages ocrDocument.Pages.AddPage(Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif"), Nothing) ocrDocument.Pages.AddPage(Path.Combine(LEAD_VARS.ImagesDir, "Ocr2.tif"), Nothing) ' Auto-zone all the pages ocrDocument.Pages.AutoZone(Nothing) Console.WriteLine("Number of zones after auto-zone:") For i As Integer = 0 To ocrDocument.Pages.Count - 1 Console.WriteLine(" Page {0} has {1} zones.", i, ocrDocument.Pages(i).Zones.Count) Next ' Save the zones to a disk file Dim zonesFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "LoadSaveZonesExample.ozf") ocrDocument.SaveZones(zonesFileName) ' Clear the zones For i As Integer = 0 To ocrDocument.Pages.Count - 1 ocrDocument.Pages(i).Zones.Clear() Next ' Show the zones now: Console.WriteLine("Number of zones after saving the zones to file and then clear:") For i As Integer = 0 To ocrDocument.Pages.Count - 1 Console.WriteLine(" Page {0} has {1} zones.", i, ocrDocument.Pages(i).Zones.Count) Next ' Re-load the zones ocrDocument.LoadZones(zonesFileName) ' Show the zones now: ocrDocument.Pages.AutoZone(Nothing) Console.WriteLine("Number of zones after loading the zones from file:") For i As Integer = 0 To ocrDocument.Pages.Count - 1 Console.WriteLine(" Page {0} has {1} zones.", i, ocrDocument.Pages(i).Zones.Count) Next End Using End Using End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" Public Const OcrAdvantageRuntimeDir As String = "C:\LEADTOOLS 18\Bin\Common\OcrAdvantageRuntime" End Class
using Leadtools; using Leadtools.Codecs; using Leadtools.Forms.Ocr; using Leadtools.Forms; using Leadtools.WinForms; using Leadtools.Drawing; private static void LoadSaveZonesExample() { OcrEngineType engineType = OcrEngineType.Advantage; using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(engineType, false)) { ocrEngine.Startup(null, null, null, LEAD_VARS.OcrAdvantageRuntimeDir); using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument()) { // Add 2 pages ocrDocument.Pages.AddPage(Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif"), null); ocrDocument.Pages.AddPage(Path.Combine(LEAD_VARS.ImagesDir, "Ocr2.tif"), null); // Auto-zone all the pages ocrDocument.Pages.AutoZone(null); Console.WriteLine("Number of zones after auto-zone:"); for (int i = 0; i < ocrDocument.Pages.Count; i++) { Console.WriteLine(" Page {0} has {1} zones.", i, ocrDocument.Pages[i].Zones.Count); } // Save the zones to a disk file string zonesFileName = Path.Combine(LEAD_VARS.ImagesDir, "LoadSaveZonesExample.ozf"); ocrDocument.SaveZones(zonesFileName); // Clear the zones for (int i = 0; i < ocrDocument.Pages.Count; i++) { ocrDocument.Pages[i].Zones.Clear(); } // Show the zones now: Console.WriteLine("Number of zones after saving the zones to file and then clear:"); for (int i = 0; i < ocrDocument.Pages.Count; i++) { Console.WriteLine(" Page {0} has {1} zones.", i, ocrDocument.Pages[i].Zones.Count); } // Re-load the zones ocrDocument.LoadZones(zonesFileName); // Show the zones now: ocrDocument.Pages.AutoZone(null); Console.WriteLine("Number of zones after loading the zones from file:"); for (int i = 0; i < ocrDocument.Pages.Count; i++) { Console.WriteLine(" Page {0} has {1} zones.", i, ocrDocument.Pages[i].Zones.Count); } } } } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; public const string OcrAdvantageRuntimeDir = @"C:\LEADTOOLS 18\Bin\Common\OcrAdvantageRuntime"; }
using Leadtools; using Leadtools.Codecs; using Leadtools.Forms.Ocr; using Leadtools.Forms; private async Task LoadSaveZonesExample() { OcrEngineType engineType = OcrEngineType.Advantage; IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(engineType, false); ocrEngine.Startup(null, null, String.Empty, Tools.OcrEnginePath); IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument(); // Add 2 pages IOcrPage ocrPage = null; using (RasterCodecs codecs = new RasterCodecs()) { StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(@"Assets\Ocr1.tif"); using (RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile))) ocrPage = ocrDocument.Pages.AddPage(image, null); loadFile = await Tools.AppInstallFolder.GetFileAsync(@"Assets\Ocr2.tif"); using (RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile))) ocrPage = ocrDocument.Pages.AddPage(image, null); } // Auto-zone all the pages ocrDocument.Pages.AutoZone(null); Debug.WriteLine("Number of zones after auto-zone:"); for (int i = 0; i < ocrDocument.Pages.Count; i++) { Debug.WriteLine(" Page {0} has {1} zones.", i, ocrDocument.Pages[i].Zones.Count); } // Save the zones to a disk file string zonesFileName = "LoadSaveZonesExample.ozf"; StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(zonesFileName); await ocrDocument.SaveZonesAsync(saveFile); // Clear the zones for (int i = 0; i < ocrDocument.Pages.Count; i++) { ocrDocument.Pages[i].Zones.Clear(); } // Show the zones now: Debug.WriteLine("Number of zones after saving the zones to file and then clear:"); for (int i = 0; i < ocrDocument.Pages.Count; i++) { Debug.WriteLine(" Page {0} has {1} zones.", i, ocrDocument.Pages[i].Zones.Count); } // Re-load the zones await ocrDocument.LoadZonesAsync(saveFile); // Show the zones now: ocrDocument.Pages.AutoZone(null); Debug.WriteLine("Number of zones after loading the zones from file:"); for (int i = 0; i < ocrDocument.Pages.Count; i++) { Debug.WriteLine(" Page {0} has {1} zones.", i, ocrDocument.Pages[i].Zones.Count); } }
IOcrDocument Interface
IOcrDocument Members
Overload List
IOcrPage.LoadZones(fileName)
IOcrPage.LoadZones(fileName, pageNumber)
IOcrPage.LoadZones(Stream)
IOcrPage.LoadZones(Stream, pageNumber)
IOcrDocument.LoadZones(Stream)
IOcrPage.SaveZones(fileName)
IOcrPage.SaveZones(stream)
IOcrPage.SaveZones(fileName, pageNumber)
IOcrPage.SaveZones(stream, pageNumber)
IOcrDocument.SaveZones(fileName)
IOcrDocument.SaveZones(Stream)
IOcrPageCollection Interface
IOcrZoneCollection Interface
OcrZone Structure
IOcrPage.Recognize
Programming with the LEADTOOLS .NET OCR