public void SaveZones(
string fileName,
OcrWriteXmlOptions xmlOptions
)
fileName
The name of the file that will contain the zones data.
xmlOptions
Options to use when writing the XML data.
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 multipage 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 multipage 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 multipage file or stream back into a multipage OCR document. Or IOcrPage.LoadZones(fileName, pageNumber) and IOcrPage.LoadZones(stream, pageNumber) to load any single page from a multipage OCR document into a particular OCR page.
Note on loading zones from a multipage 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 contains 0 items). You can then use IOcrPage.AutoZone if required to re-zone this page.
Use IOcrDocument.LoadZones(fileName) or IOcrPage.LoadZones(fileName, pageNumber) to load all or one page zones saved by this method.
To load and save the zones to a .NET stream, use IOcrDocument.SaveZones(stream), IOcrDocument.LoadZones(stream) and IOcrPage.LoadZones(stream, pageNumber).
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Ocr;
using Leadtools.Forms.Common;
using Leadtools.WinForms;
using Leadtools.Drawing;
public void LoadSaveZonesExample()
{
OcrEngineType engineType = OcrEngineType.LEAD;
using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(engineType))
{
ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir);
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:\LEADTOOLS23\Resources\Images";
public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS23\Bin\Common\OcrLEADRuntime";
}