LEADTOOLSフォーム

フレームを表示

ここでは、一連のマスターフォームを作成し、それらのマスターフォームとLEADTOOLS高レベルフォームインタフェースを使用してフォームを認識および処理するコードを新規プロジェクトに追加する手順について説明します。

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

    [C#]

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

    [Visual Basic]

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

    [C#]

                 // Create the Auto Forms Engine
                 AutoFormsEngine autoEngine;
                 
                 RasterCodecs formsCodec;
                 // Create the OCR Engine
                 IOcrEngine ocrEngine;
                 
                 // Create the repository of master forms
                 DiskMasterFormsRepository formsRepository;
                 
    

    [Visual Basic]

                 ' Create the Auto Forms Engine
                 Dim autoEngine As AutoFormsEngine
                
                 Dim formsCodec As RasterCodecs
                 ' Create the OCR Engine
                 Dim ocrEngine As IOcrEngine
                 
                 ' Create the repository of master forms
                 Dim formsRepository As DiskMasterFormsRepository            
                 
    
  8. フォーム(Form1_Load())のロードイベントに、以下のcodeを追加します:

    注意:開発者キーと.LICファイルは、公認のツールキットの中で提供されます。

    [C#]

                 try
                 {
                    string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
                    // Unlock LEADTOOLS special Support
                    string MY_DEVELOPER_KEY = "abc123xyz";
                    RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DEVELOPER_KEY);
                    
                    formsCodec = new RasterCodecs();
                
                    // Create an OCR Engine for each processor on the machine. This allows for optimal use of thread during recognition and processing.
                    ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false);
                    ocrEngine.Startup(formsCodec, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime");
                    
                    //Point repository to directory with existing master forms
                    formsRepository = new DiskMasterFormsRepository(formsCodec, @"C:\Users\Public\Documents\LEADTOOLS Images\Forms\MasterForm Sets\OCR");
                    autoEngine = new AutoFormsEngine(formsRepository, ocrEngine, null, AutoFormsRecognitionManager.Default | AutoFormsRecognitionManager.Ocr, 30, 80, true);
                 }
                 catch (Exception ex)
                 {
                    MessageBox.Show(ex.Message);
                 }
                 
    

    [Visual Basic]

                 Try
                    Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
                    ' Unlock LEADTOOLS special Support
                    Dim MY_DEVELOPER_KEY As String = "abc123xyz"
                    RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DEVELOPER_KEY)
                    
                    formsCodec = New RasterCodecs()
                    ' Create an OCR Engine for each processor on the machine. This allows for optimal use of thread during recognition and processing.
                    ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, False)
                    ocrEngine.Startup(formsCodec, Nothing, Nothing, "C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime")
                    
                    ' Point repository to directory with existing master forms
                    formsRepository = New DiskMasterFormsRepository(formsCodec, "C:\Users\Public\Documents\LEADTOOLS Images\Forms\MasterForm Sets\OCR")
                    autoEngine = New AutoFormsEngine(formsRepository, ocrEngine, Nothing, AutoFormsRecognitionManager.Default Or AutoFormsRecognitionManager.Ocr, 30, 80, True)
                 Catch ex As Exception
                    MessageBox.Show(ex.Message)
                 End Try
                 
    
  9. LEADTOOLSには、このチュートリアルで使用するサンプルのマスターフォームと記入済みフォームが付属しています。これらの画像のパスはデフォルトのインストール場所にハードコーディングされているので、別のパスを使用する場合はパスを適宜変更してください。フォームにボタンを追加して、Textプロパティを"フォームを認識して処理"に設定します。続いてボタンをダブルクリックし、ボタンのハンドラに以下のコードを追加します。

    [C#]

                 try
                 {
                    // For this tutorial, we will use the sample W9 sample filled form.
                    string resultMessage = "Form not recognized";
                    string formToRecognize = @"C:\Users\Public\Documents\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif";
                    
                    //Run the recognition and processing
                    AutoFormsRunResult runResult = autoEngine.Run(formToRecognize, null);
                    if (runResult != null)
                    {
                       FormRecognitionResult recognitionResult = runResult.RecognitionResult.Result;
                       resultMessage = String.Format("This form has been recognized as a {0} with {1} confidence.", runResult.RecognitionResult.MasterForm.Name, recognitionResult.Confidence);
                    }
                    
                    MessageBox.Show(resultMessage, "Recognition Results");
                    ShowProcessedResults(runResult);
                 }
                 catch (Exception ex)
                 {
                    MessageBox.Show(ex.Message);
                 } 
                 
    

    [Visual Basic]

                 Try
                    ' For this tutorial, we will use the sample W9 sample filled form.
                    Dim resultMessage As String = "Form not recognized"
                    Dim formToRecognize As String = "C:\Users\Public\Documents\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif"
                    
                    ' Run the recognition and processing
                    Dim runResult As AutoFormsRunResult = autoEngine.Run(formToRecognize, Nothing)
                    If Not runResult Is Nothing Then
                       Dim recognitionResult As FormRecognitionResult = runResult.RecognitionResult.Result
                       resultMessage = String.Format("This form has been recognized as a {0} with {1} confidence.", runResult.RecognitionResult.MasterForm.Name, recognitionResult.Confidence)
                    End If
                    
                    MessageBox.Show(resultMessage, "Recognition Results")
                    ShowProcessedResults(runResult)
                 Catch ex As Exception
                    MessageBox.Show(ex.Message)
                 End Try
                 
    
  10. クラスに以下の関数を追加します:

    [C#]

                 private void ShowProcessedResults(AutoFormsRunResult runResult)
                 {
                    if (runResult == null)
                       return;
                       
                    string resultsMessage = String.Empty;
                    try
                    {
                       foreach (FormPage formPage in runResult.FormFields)
                       {
                          foreach (FormField field in formPage)
                          {
                             if (field != null)
                             {
                                resultsMessage = String.Format("{0}{1} = {2}{3}",
                                   resultsMessage,
                                   field.Name,
                                   (field.Result as TextFormFieldResult).Text,
                                   Environment.NewLine);
                             }
                          }
                       }
                    }
                    catch (Exception ex)
                    {
                       MessageBox.Show(ex.Message);
                    }
                    
                    if (String.IsNullOrEmpty(resultsMessage))
                       MessageBox.Show("No fields were processed", "Field ProcessingResults");
                    else
                       MessageBox.Show(resultsMessage, "Field ProcessingResults");
                 }
                 
    

    [Visual Basic]

                 Private Sub ShowProcessedResults(ByVal runResult As AutoFormsRunResult)
                    If runResult Is Nothing Then
                       Return
                    End If
                    
                    Dim resultsMessage As String = String.Empty
                    Try
                       For Each formPage As FormPage In runResult.FormFields
                          For Each field As FormField In formPage
                             If Not field Is Nothing Then
                                resultsMessage = String.Format("{0}{1} = {2}{3}", resultsMessage, field.Name, (CType(IIf(TypeOf field.Result Is TextFormFieldResult, field.Result, Nothing), TextFormFieldResult)).Text, Environment.NewLine)
                             End If
                          Next field
                       Next formPage
                    Catch ex As Exception
                       MessageBox.Show(ex.Message)
                    End Try
                    
                    If String.IsNullOrEmpty(resultsMessage) Then
                       MessageBox.Show("No fields were processed", "Field ProcessingResults")
                    Else
                       MessageBox.Show(resultsMessage, "Field ProcessingResults")
                    End If
                 End Sub
                 
    
  11. FormClosingイベントハンドラに以下のクリーンアップcodeを追加します:

    [C#]

                 autoEngine.Dispose();
                 if (ocrEngine != null && ocrEngine.IsStarted)
                    ocrEngine.Shutdown();
                 
    

    [Visual Basic]

                 autoEngine.Dispose()
                 If Not ocrEngine Is Nothing AndAlso ocrEngine.IsStarted Then
                    ocrEngine.Shutdown()
                 End If
                 
    
  12. プロジェクト.exeの出力フォルダをLEADTOOLS .Net DLLがインストールされるところに設定します。たとえば:#LEADTOOLS_INSTALLDIR#\Bin\Dotnet4\Win32。
  13. プロジェクトを実行して、それをテストします。[フォームを認識して処理]ボタンをクリックすると、サンプルフォーム画像がロードされ、認識、処理されて、結果が表示されます。

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

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