LEADTOOLSフォーム

フレームを表示

プロジェクトを開始するために、以下の手順をとります、そして、一組のマスターを作成する若干のcodeを追加することは入力済みフォームを認めるために作って、使います:

  1. Visual Studio .NETを開始します。
  2. ファイル->新規作成->プロジェクトを選択します... メニューから。
  3. [新しいプロジェクト]ダイアログボックスの[プロジェクトの種類]リストから[Visual C#プロジェクト]または[Visual Basicプロジェクト]を選択し、[テンプレート]リストで[Windowsアプリケーション]を選択します。
  4. プロジェクト名前フィールドの「フォームを認めること」としてプロジェクト名を入力します、そして、OKを選択します。必要であれば、プロジェクトの新しい場所を入力するか、ブラウズボタンを用いてディレクトリを選択します、そして、OKを選択します。
  5. 「ソリューションエクスプローラー」ウィンドウでは、「参照」フォルダを右クリックします、そして、コンテキストメニューから「参照の追加...」を選択します。参照の追加ダイアログボックスでは、「.NET」タブを選択して、「C:\LEADTOOLS 19\Bin\Dotnet\Win32」フォルダに閲覧して、以下のDLLを選択します:
    • Leadtools.dll
    • Leadtools.Codecs.dll
    • Leadtools.Codecs.Fax.dll
    • Leadtools.Codecs.Tif.dll
    • Leadtools.Forms.dll
    • Leadtools.Forms.DocumentWriters.dll
    • Leadtools.Forms.Ocr.dll
    • Leadtools.Forms.Ocr.Advantage.dll
    • Leadtools.Forms.Recognition.dll
    • Leadtools.Forms.Recognition.Ocr.dll
  6. Form1.cs/Form1.vbファイルの上で、以下の行を追加します:

    [C#]

    
                using Leadtools;
                using Leadtools.Codecs;
                using Leadtools.Forms;
                using Leadtools.Forms.Ocr;
                using Leadtools.Forms.Recognition;
                using Leadtools.Forms.Recognition.Ocr;
                using System.IO; 
                
    

    [Visual Basic]

    
                Imports Leadtools
                Imports Leadtools.Codecs
                Imports Leadtools.Forms
                Imports Leadtools.Forms.Ocr 
                Imports Leadtools.Forms.Recognition
                Imports Leadtools.Forms.Recognition.Ocr
                Imports System.IO
                
    
  7. Form1クラスに以下のメンバを追加します:

    [C#]

    
                //Create the recognition engine
                FormRecognitionEngine recognitionEngine = new FormRecognitionEngine();
                RasterCodecs codecs;
                //Create the OCR Engine to use in the recognition
                IOcrEngine formsOCREngine;
                
    

    [Visual Basic]

    
                'Create the recognition engine
                Dim recognitionEngine As FormRecognitionEngine = New FormRecognitionEngine()
                Dim codecs As RasterCodecs
                'Create the OCR Engine to use in the recognition
                Dim formsOCREngine As IOcrEngine
                
    
  8. フォーム(Form1_Load())のロードイベントに、以下のcodeを追加します:

    [C#]

    
                try
                 {
                    string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
                    
                    // Unlock the Forms support
                    string MY_FORMSDEVELOPER_KEY = "xyz123abc";
                    RasterSupport.SetLicense(MY_LICENSE_FILE, MY_FORMSDEVELOPER_KEY);
                    
                    // Unlock the OCR Advantage support
                    string MY_OCRPLSDEVELOPER_KEY = "abc123xyz";
                    RasterSupport.SetLicense(MY_LICENSE_FILE, MY_OCRPLSDEVELOPER_KEY);
                    
                    // Unlock the Document support
                    string MY_DOCDEVELOPER_KEY = "123xyzabc";
                    RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DOCDEVELOPER_KEY);
                    
                    codecs = new RasterCodecs();
                    //Create a LEADTOOLS OCR Advantage Engine and start it
                    formsOCREngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false);
                    formsOCREngine.Startup(codecs, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime");
                    //Add an OCRObjectManager to the recognition engines
                    //ObjectManager collection
                    OcrObjectsManager ocrObjectsManager = new OcrObjectsManager(formsOCREngine);
                    ocrObjectsManager.Engine = formsOCREngine;
                    recognitionEngine.ObjectsManagers.Add(ocrObjectsManager);
                 }
                 catch (Exception ex)
                 {
                    MessageBox.Show(ex.Message);
                 } 
                 
                
    

    [Visual Basic]

    
                Try
                   Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
                   
                   ' Unlock the Forms support
                   Dim MY_FORMSDEVELOPER_KEY As String = "xyz123abc"
                   RasterSupport.SetLicense(MY_LICENSE_FILE, MY_FORMSDEVELOPER_KEY)
                   
                   ' Unlock the OCR Advantage support
                   Dim MY_OCRPLSDEVELOPER_KEY As String = "abc123xyz"
                   RasterSupport.SetLicense(MY_LICENSE_FILE, MY_OCRPLSDEVELOPER_KEY)
                   
                   ' Unlock the Document support
                   Dim MY_DOCDEVELOPER_KEY As String = "123xyzabc"
                   RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DOCDEVELOPER_KEY)
                   codecs = New RasterCodecs()
                   'Create a LEADTOOLS OCR Advantage OCR Engine and start it
                   formsOCREngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, False)
                   formsOCREngine.Startup(codecs, Nothing, Nothing, "C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime")
                   'Add an OCRObjectManager to the recognition engines
                   'ObjectManager collection
                   Dim ocrObjectsManager As OcrObjectsManager = New OcrObjectsManager(formsOCREngine)
                   ocrObjectsManager.Engine = formsOCREngine
                   recognitionEngine.ObjectsManagers.Add(ocrObjectsManager)
                Catch ex As Exception
                   MessageBox.Show(ex.Message)
                End Try
                
    
  9. LEADTOOLSは、このチュートリアルのために使ういくつかのマスターフォーム画像を出荷します。これらの画像のパスはデフォルトのインストール場所にハードコーディングされているので、別のパスを使用する場合はパスを適宜変更してください。フォームにボタンを追加して、そのTextプロパティを「マスターフォーム属性を作成します」に設定して、それからそれをダブルクリックして、そのハンドラに以下のcodeを追加します:

    [C#]

    
                try
                {
                   //Get master form filenames
                   //You may need to update the below path to point to the "Leadtools Images\Forms\MasterForm Sets\OCR" directory.
                   string [] masterFileNames = Directory.GetFiles(@"C:\Users\Public\Documents\LEADTOOLS Images\Forms\MasterForm Sets\OCR",
                                                                      "*.tif",
                                                                      SearchOption.AllDirectories);
                   foreach (string masterFileName in masterFileNames)
                   {
                      string formName = Path.GetFileNameWithoutExtension(masterFileName);
                      //Load the master form image
                      RasterImage image = codecs.Load(masterFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, -1);
                      //Create a new master form
                      FormRecognitionAttributes masterFormAttributes = recognitionEngine.CreateMasterForm(formName, Guid.Empty, null);
                      for (int i = 0; i < image.PageCount; i++)
                      {
                         image.Page = i + 1;
                         //Add the master form page to the recognition engine
                         recognitionEngine.AddMasterFormPage(masterFormAttributes, image, null);
                      }
                      //Close the master form and save it's attributes
                      recognitionEngine.CloseMasterForm(masterFormAttributes);
                      File.WriteAllBytes(formName + ".bin", masterFormAttributes.GetData());
                   }
                   MessageBox.Show("Master Form Processing Complete", "Complete");
                }
                catch(Exception ex)
                {
                   MessageBox.Show(ex.Message);
                }
                
    

    [Visual Basic]

    
                 
                Try
                   'Get master form filenames
                   'You may need to update the below path to point to the "Leadtools Images\Forms\MasterForm Sets\OCR" directory.
                   Dim masterFileNames As String() = Directory.GetFiles("C:\Users\Public\Documents\LEADTOOLS Images\Forms\MasterForm Sets\OCR",
                                                                            "*.tif",
                                                                            SearchOption.AllDirectories)
                   For Each masterFileName As String In masterFileNames
                      Dim formName As String = Path.GetFileNameWithoutExtension(masterFileName)
                      'Load the master form image 
                      Dim image As RasterImage = codecs.Load(masterFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, -1)
                      'Create a new master form
                      Dim masterFormAttributes As FormRecognitionAttributes = recognitionEngine.CreateMasterForm(formName, Guid.Empty, Nothing)
                      Dim i As Integer = 0
                      Do While i < image.PageCount
                         image.Page = i + 1
                         'Add the master form page to the recognition engine
                         recognitionEngine.AddMasterFormPage(masterFormAttributes, image, Nothing)
                         i += 1
                      Loop
                      'Close the master form and save it's attributes
                      recognitionEngine.CloseMasterForm(masterFormAttributes)
                      File.WriteAllBytes(formName & ".bin", masterFormAttributes.GetData())
                   Next masterFileName
                   MessageBox.Show("Master Form Processing Complete", "Complete")
                Catch ex As Exception 
                   MessageBox.Show(ex.Message)
                End Try
                
    
  10. LEADTOOLSは、このチュートリアルのために使う各々のマスターフォームのために、いくつかの入力済みフォームイメージを出荷します。フォームにボタンを追加して、そのTextプロパティを「Recognizeフォーム」に設定して、それからそれをダブルクリックして、そのハンドラに以下のcodeを追加します:

    [C#]

    
                try
                {
                   //For this tutorial, we will use the sample W9 sample filled form.
                   //You may need to update the below path to point to "\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif".
                   string formToRecognize = @"C:\Users\Public\Documents\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif";
                   RasterImage image = codecs.Load(formToRecognize, 0, CodecsLoadByteOrder.BgrOrGray, 1, -1);
                   //Load the image to recognize
                   FormRecognitionAttributes filledFormAttributes = recognitionEngine.CreateForm(null);
                   for (int i = 0; i < image.PageCount; i++)
                   {
                      image.Page = i + 1;
                      //Add each page of the filled form to the recognition engine
                      recognitionEngine.AddFormPage(filledFormAttributes, image, null);
                   }
                   recognitionEngine.CloseForm(filledFormAttributes);
                   string resultMessage = "The form could not be recognized";
                   //Compare the attributes of each master form to the attributes of the filled form
                   string[] masterFileNames = Directory.GetFiles(Application.StartupPath, "*.bin");
                   foreach (string masterFileName in masterFileNames)
                   {
                      FormRecognitionAttributes masterFormAttributes = new FormRecognitionAttributes();
                      masterFormAttributes.SetData(File.ReadAllBytes(masterFileName));
                      FormRecognitionResult recognitionResult = recognitionEngine.CompareForm(masterFormAttributes, filledFormAttributes, null);
                      //In this example, we consider a confidence equal to or greater
                      //than 90 to be a match
                      if(recognitionResult.Confidence >= 80)
                      {
                         resultMessage = String.Format("This form has been recognized as a {0}", Path.GetFileNameWithoutExtension(masterFileName));
                         break;
                      }
                   }
                   MessageBox.Show(resultMessage, "Recognition Results");
                }
                catch (Exception ex)
                {
                   MessageBox.Show(ex.Message);
                }
                
    

    [Visual Basic]

    
                Try
                   'For this tutorial, we will use the sample W9 sample filled form.
                   'You may need to update the below path to point to "\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif".
                   Dim formToRecognize As String = "C:\Users\Public\Documents\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif"
                   Dim image As RasterImage = codecs.Load(formToRecognize, 0, CodecsLoadByteOrder.BgrOrGray, 1, -1)
                   'Load the image to recognize
                   Dim filledFormAttributes As FormRecognitionAttributes = recognitionEngine.CreateForm(Nothing)
                   Dim i As Integer = 0
                   Do While i < image.PageCount image.Page = i + 1
                      'Add each page of the filled form to the recognition engine
                      recognitionEngine.AddFormPage(filledFormAttributes, image, Nothing)
                      i += 1
                   Loop
                   recognitionEngine.CloseForm(filledFormAttributes)
                   Dim resultMessage As String = "The form could not be recognized"
                   'Compare the attributes of each master form to the attributes of the filled form
                   Dim masterFileNames As String() = Directory.GetFiles(Application.StartupPath, "*.bin")
                   For Each masterFileName As String In masterFileNames
                      Dim masterFormAttributes As FormRecognitionAttributes = New FormRecognitionAttributes()
                      masterFormAttributes.SetData(File.ReadAllBytes(masterFileName))
                      Dim recognitionResult As FormRecognitionResult = recognitionEngine.CompareForm(masterFormAttributes, filledFormAttributes, Nothing)
                      'In this example, we consider a confidence equal to or greater than 90 to be a match
                      If recognitionResult.Confidence >= 80 Then
                         resultMessage = String.Format("This form has been recognized as a {0}", Path.GetFileNameWithoutExtension(masterFileName))
                         Exit For 
                      End If
                   Next masterFileName 
                   MessageBox.Show(resultMessage, "Recognition Results")
                Catch ex As Exception
                      MessageBox.Show(ex.Message)
                End Try 
                
    
  11. 下記が掃除するaddは、FormClosingイベントハンドラに符号化します:

    [C#]

    
                 if (formsOCREngine != null && formsOCREngine.IsStarted)
                    formsOCREngine.Shutdown();
                 
                
    

    [Visual Basic]

    
                If Not formsOCREngine Is Nothing AndAlso formsOCREngine.IsStarted
                   Then formsOCREngine.Shutdown()
                End If 
                
    
  12. プロジェクトを実行して、それをテストします。まず[マスターフォーム属性を作成]ボタンをクリックし、ディレクトリ内のすべてのマスターフォーム画像を列挙して、各属性をアプリケーションディレクトリに保存します。次に、雛形imageをロードする「Recognizeフォーム」ボタンをクリックして、その属性を生成して、各々のマスターフォーム属性と比較して、結果を示します。

    注意:「無効なファイルフォーマット」または「機能サポートされていません」例外に遭遇するならば、トピック無効なファイル形式/サポートされない機能を参照します。

© 1991-2016のLEAD Technologies, Inc. All Rights Reserved.