LEADTOOLS OCR(Leadtools.Forms.Ocrアセンブリ)

フレームを表示

IOcrPageインターフェース








メンバ 
OCRドキュメントにおけるimageページを定義します。
オブジェクトモデル
構文
public interface IOcrPage : System.IDisposable  
'Declaration
 
Public Interface IOcrPage 
   Inherits System.IDisposable 
'Usage
 
Dim instance As IOcrPage
@interface LTOcrPage : NSObject
public class OcrPage
function Leadtools.Forms.Ocr.IOcrPage() System.IDisposable 
public interface class IOcrPage : public System.IDisposable  
解説

IOcrPageは、OCRエンジンで現時点では追加されるページを定義します。各々のページは、手動で、または、自動ゾーニングを通して追加されるページのためにもそれ(imageはページがロードされるか、追加される時を使いました)とOCRゾーンのグループを作成するのに用いられるラスター画像を格納します。

ページはスタンドアロンでありえるか、IOcrDocumentの開くことがありえます。スタンドアロンページを作成するために、IOcrEngine.CreatePageを使います。IOcrDocumentの一部としてページを作成するために、IOcrDocument.Pagesコレクションを使います。

メモリベースであるかファイルベースのドキュメントを作成する方法またはディスクからファイルベースのドキュメントをロードする方法に関する情報については、「LEADTOOLS .NET OCRによるIOcrDocumentManager.CreateDocumentとプログラミング」を参照してください。

メモリベースのドキュメント

IOcrDocument.Pagesプロパティを通してメモリベースのOCRドキュメント(IOcrDocument)におけるページにアクセスすることができます。このプロパティの値は、IOcrPageCollectionインターフェースです。このインターフェースは標準的な.NET ICollection`1IList`1IEnumerable`1インターフェースを実装します、そして、それゆえに、ドキュメントの様々なページを追加して、削除して、取得して、設定して、終わりまで反復処理するためにこれらのインターフェースのメンバを使うことができます。

メモリベースのドキュメントに、直接IOcrPageオブジェクトを作成することができません。代わりに、いろいろなAddPageAddPagesInsertPageIOcrPageCollectionインターフェースのInsertPagesメソッドを通してエンジンにページを追加します。一度ページが追加されたら、それと関連したIOcrPageオブジェクトを取得するために、インデックスによってそれにアクセスします。

このように得られるページは、破棄される必要はありません。それが破棄されるとき、オーナーIOcrDocumentはページを自動的に破棄します。

ファイルベースのドキュメント

通常、IOcrEngine.CreatePageを用いて直接ページを作成します。ゾーンにすべてのIOcrPageメソッドを使うことができて、通常通り下記の通りドキュメントを認めることができます。そして、最終的な出力フォーマットにページを保存することが必要であるならば、ページIOcrPageCollection.Addメンバを用いてファイルベースのIOcrDocumentにこのページを追加することができます。

CreatePageから得られるページは、Disposeメソッドを用いてユーザーによって破棄されなければなりません。

各々のページは、OCRゾーンのコレクションを格納します。このコレクションは、Zonesメンバでアクセスできます。このメンバは、また、IOcrPageCollectionと同じ標準的な.NETコレクションインターフェースを実装するIOcrZoneCollectionインターフェースを実装します。それゆえに、ページでいろいろなゾーンを追加して、削除して、取得して、設定して、終わりまで反復処理するために、Zonesを使うことができます。

ページの中にゾーンを必要に応じて操作した後に、ページの認識データを集めるために、Recognizeを呼び出します。このデータはページで内部的に保存されて、PDFまたはMicrosoft Wordなどのエンジンでサポートされる多くのドキュメントファイルフォーマットの1つに、いずれ保存されることができます。

ページが認められたあと、GetRecognizedCharactersSetRecognizedCharactersメソッドを通して認識データ(文字とワード)を調べて、修正します。GetTextメソッドは、シンプルな文字列オブジェクトとして認識データを取得するために使用できます。

一度IOcrPageオブジェクトが得られたら、以下をすることができます:

サンプル

このサンプルはOCRドキュメントを作成して、それにページを追加して、ページに関するいろいろな情報を示して、それから、PDFファイルとしてそれを保存します。

Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Forms.Ocr
Imports Leadtools.Forms
Imports Leadtools.Forms.DocumentWriters
Imports Leadtools.WinForms
Imports Leadtools.Drawing
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Color

<TestMethod>
Public Sub OcrPageExample()
   Dim tifFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif")
   Dim pdfFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.pdf")
   ' Create an instance of the engine
   Using ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, False)
      ' Start the engine using default parameters
      ocrEngine.Startup(Nothing, Nothing, Nothing, LEAD_VARS.OcrAdvantageRuntimeDir)

      ' Create an OCR document
      Using ocrDocument As IOcrDocument = ocrEngine.DocumentManager.CreateDocument()
         ' Add this image to the document
         Dim ocrPage As IOcrPage = ocrDocument.Pages.AddPage(tifFileName, Nothing)

         ' Auto-recognize the zones in the page
         ocrPage.AutoZone(Nothing)

         ' Show its information
         Console.WriteLine("Size: {0} by {1} pixels", ocrPage.Width, ocrPage.Height)
         Console.WriteLine("Resolution: {0} by {1} dots/inch", ocrPage.DpiX, ocrPage.DpiX)
         Console.WriteLine("Bits/Pixel: {0}, Bytes/Line: {1}", ocrPage.BitsPerPixel, ocrPage.BytesPerLine)

         Dim palette As Byte() = ocrPage.GetPalette()
         Dim paletteEntries As Integer
         If palette IsNot Nothing Then
            paletteEntries = palette.Length \ 3
         Else
            paletteEntries = 0
         End If

         Console.WriteLine("Number of entries in the palette: {0}", paletteEntries)
         Console.WriteLine("Original format of this page: {0}", ocrPage.OriginalFormat)
         Console.WriteLine("Has this page been recognized? : {0}", ocrPage.IsRecognized)
         ShowZonesInfo(ocrPage)

         ' Recognize it and save it as PDF
         ocrPage.Recognize(Nothing)
         ocrDocument.Save(pdfFileName, DocumentFormat.Pdf, Nothing)
      End Using

      ' Shutdown the engine
      ' Note: calling Dispose will also automatically shutdown the engine if it has been started
      ocrEngine.Shutdown()
   End Using
End Sub

Private Sub ShowZonesInfo(ocrPage As IOcrPage)
   Console.WriteLine("Zones:")
   For Each ocrZone As OcrZone In ocrPage.Zones
      Dim index As Integer = ocrPage.Zones.IndexOf(ocrZone)
      Console.WriteLine("Zone index: {0}", index)
      Console.WriteLine("  Id                  {0}", ocrZone.Id)
      Console.WriteLine("  Bounds              {0}", ocrZone.Bounds)
      Console.WriteLine("  ZoneType            {0}", ocrZone.ZoneType)
      Console.WriteLine("  CharacterFilters:   {0}", ocrZone.CharacterFilters)
      Console.WriteLine("----------------------------------")
   Next
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 19\Bin\Common\OcrAdvantageRuntime"
End Class
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Forms.Ocr;
using Leadtools.Forms;
using Leadtools.Forms.DocumentWriters;
using Leadtools.WinForms;
using Leadtools.Drawing;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;

public void OcrPageExample()
{
   string tifFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif");
   string pdfFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.pdf");
   // Create an instance of the engine
   using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false))
   {
      // Start the engine using default parameters
      ocrEngine.Startup(null, null, null, LEAD_VARS.OcrAdvantageRuntimeDir);

      // Create an OCR document
      using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument())
      {
         // Add this image to the document
         IOcrPage ocrPage = ocrDocument.Pages.AddPage(tifFileName, null);

         // Auto-recognize the zones in the page
         ocrPage.AutoZone(null);

         // Show its information
         Console.WriteLine("Size: {0} by {1} pixels", ocrPage.Width, ocrPage.Height);
         Console.WriteLine("Resolution: {0} by {1} dots/inch", ocrPage.DpiX, ocrPage.DpiX);
         Console.WriteLine("Bits/Pixel: {0}, Bytes/Line: {1}", ocrPage.BitsPerPixel, ocrPage.BytesPerLine);

         byte[] palette = ocrPage.GetPalette();
         int paletteEntries;
         if (palette != null)
            paletteEntries = palette.Length / 3;
         else
            paletteEntries = 0;

         Console.WriteLine("Number of entries in the palette: {0}", paletteEntries);
         Console.WriteLine("Original format of this page: {0}", ocrPage.OriginalFormat);
         Console.WriteLine("Has this page been recognized? : {0}", ocrPage.IsRecognized);
         ShowZonesInfo(ocrPage);

         // Recognize it and save it as PDF
         ocrPage.Recognize(null);
         ocrDocument.Save(pdfFileName, DocumentFormat.Pdf, null);
      }

      // Shutdown the engine
      // Note: calling Dispose will also automatically shutdown the engine if it has been started
      ocrEngine.Shutdown();
   }
}

private void ShowZonesInfo(IOcrPage ocrPage)
{
   Console.WriteLine("Zones:");
   foreach (OcrZone ocrZone in ocrPage.Zones)
   {
      int index = ocrPage.Zones.IndexOf(ocrZone);
      Console.WriteLine("Zone index: {0}", index);
      Console.WriteLine("  Id                  {0}", ocrZone.Id);
      Console.WriteLine("  Bounds              {0}", ocrZone.Bounds);
      Console.WriteLine("  ZoneType            {0}", ocrZone.ZoneType);
      Console.WriteLine("  CharacterFilters:   {0}", ocrZone.CharacterFilters);
      Console.WriteLine("----------------------------------");
   }
}

static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
public const string OcrAdvantageRuntimeDir = @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime";
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Controls;
using Leadtools.Forms.Ocr;
using Leadtools.Forms;
using Leadtools.Forms.DocumentWriters;
using Leadtools.ImageProcessing;

      
public async Task OcrPageExample()
{
   string tifFileName = @"Assets\Ocr1.tif";
   string pdfFileName = "Ocr1.pdf";
   // Create an instance of the engine
   IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false);

   // Start the engine using default parameters
   ocrEngine.Startup(null, null, String.Empty, Tools.OcrEnginePath);

   // Create an OCR document
   IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument();

   // Add this image to the document
   IOcrPage ocrPage = null;
   using (RasterCodecs codecs = new RasterCodecs())
   {
      StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(tifFileName);
      using (RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile)))
         ocrPage = ocrDocument.Pages.AddPage(image, null);
   }

   // Auto-recognize the zones in the page
   ocrPage.AutoZone(null);

   // Show its information
   Debug.WriteLine("Size: {0} by {1} pixels", ocrPage.Width, ocrPage.Height);
   Debug.WriteLine("Resolution: {0} by {1} dots/inch", ocrPage.DpiX, ocrPage.DpiX);
   Debug.WriteLine("Bits/Pixel: {0}, Bytes/Line: {1}", ocrPage.BitsPerPixel, ocrPage.BytesPerLine);

   byte[] palette = ocrPage.GetPalette();
   int paletteEntries;
   if(palette != null)
      paletteEntries = palette.Length / 3;
   else
      paletteEntries = 0;

   Debug.WriteLine("Number of entries in the palette: {0}", paletteEntries);
   Debug.WriteLine("Original format of this page: {0}", ocrPage.OriginalFormat);
   Debug.WriteLine("Has this page been recognized? : {0}", ocrPage.IsRecognized);
   ShowZonesInfo(ocrPage);

   // Recognize it and save it as PDF
   ocrPage.Recognize(null);
   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(pdfFileName, CreationCollisionOption.ReplaceExisting);
   await ocrDocument.SaveAsync(LeadStreamFactory.Create(saveFile), DocumentFormat.Pdf, null);

   // Shutdown the engine
   ocrEngine.Shutdown();
}

private void ShowZonesInfo(IOcrPage ocrPage)
{
   Debug.WriteLine("Zones:");
   foreach(OcrZone ocrZone in ocrPage.Zones)
   {
      int index = ocrPage.Zones.IndexOf(ocrZone);
      Debug.WriteLine("Zone index: {0}", index);
      Debug.WriteLine("  Id                  {0}", ocrZone.Id);
      Debug.WriteLine("  Bounds              {0}", ocrZone.Bounds);
      Debug.WriteLine("  ZoneType            {0}", ocrZone.ZoneType);
      Debug.WriteLine("  FillMethod:         {0}", ocrZone.FillMethod);
      Debug.WriteLine("  RecognitionModule:  {0}", ocrZone.RecognitionModule);
      Debug.WriteLine("  CharacterFilters:   {0}", ocrZone.CharacterFilters);
      Debug.WriteLine("----------------------------------");
   }
}
必要条件

ターゲットプラットホーム

参照

参照

IOcrPageメンバ
Leadtools.Forms.Ocr名前空間
OcrEngineManagerクラス
OcrEngineType列挙体
IOcrPageCollectionインターフェース
IOcrZoneCollectionインターフェース
OcrZone構造体
LEADTOOLS .NET OCRによるプログラミング
OCRページの操作

Leadtools.Forms.Ocrは、認識またはDocument Imaging Suiteのライセンスと、解除キーが必要です。詳細は、以下を参照してください。LEADTOOLSツールキット機能