Recognize (非推奨)
このアクションは使用すべきではありません。 アクション Recognize を参照してください。Recognize は「認識オプション・セットアップ (Recognition Options Setup)」ダイアログの「OCR/A」タブで設定を参照してページ上の文字をすべて認識し、認識結果をページの指紋ファイル (.cco) ファイルに取り込みます。
Recognize アクションは、文書レイアウト分析および OCR を実行し、TM000001_layout.xml などのレイアウト XML ファイルを生成します。 レイアウト・ファイルは、人が文書を見る方法で、テキストを複数のブロックにグループ化します。 各ブロックには、デフォルトのブロック・タイプを指定するか、タイトルや表などの特定のタイプを指定できます。 ブロック構造をナビゲートできる locate アクション (「GoSiblingBlockNext」など) が DocumentAnalytics アクション・ライブラリーにあります。 これは、他のアクションで作成された CCO ファイルで、ページ幅全体にわたる複数の行にテキストがグループ化されるのとは対照的です。認識は、CCO を使用する Datacap のアクションで使用できます。 検証中に Locate アクションを使用してクリック・アンド・キーを実行するには、SharedRecognitionTools アクション・ライブラリーにある CreateCcoFromLayout アクションを使用します。 このアクションにより、レイアウト XML ファイルの作成後にページの CCO ファイルが作成されます。CCO が作成されると、CCO を使用する後続のアクションが使用可能になります。
名前空間のメンバー
ocr_a構文
bool Recognize ()
パラメーター
なし。戻り値
このアクションを持つルール・セットが文書階層の「ページ」オブジェクトにバインドされていない場合は False。それ以外の場合は Trueレベル
ページ・レベル。詳細
最適な認識のために、「最適なテキスト認識のためのベスト・プラクティス」資料を参照して、DPI などの最良の画像設定について理解してください。 また、画像は FAX や LZW などのロスレス圧縮を使用する必要があり、写真のみを対象とした JPEG のようなロス誘発圧縮は使用すべきではありません。 プロセスにおけるいずれかのステップで JPEG が使用されている場合、文字の線の明確性が低下し、認識の品質も低下することになります。 レイアウト・ファイルには、認識の結果が入っています。 ページ上のテキスト・エレメントを識別するために、ヒューリスティック・アルゴリズムが使用されます。 検出されるエレメントは、同じように見えるページ、または同じ形式のページでも異なる可能性があります。 特定のエレメントが常に存在することや、ブロックまたはエレメントが XML 内で常に同じ順序で表示されることは保証できません。
レイアウト XML ファイルには、データを抽出し、文書を新しい形式で再構成するために使用されるテキストのフォント属性およびカラー属性も保持されます (CSS 形式で保存されます)。
| ブロック・タイプ | レイアウト XML ファイル内のノード |
|---|---|
| Block | Block |
| Header | Header |
| Footer | Footer |
| Title | Title |
| Heading1 | H1 |
| Heading2 | H2 |
| Heading3 | H3 |
| Picture | Picture |
| Barcode | Barcode |
| Space | S |
| Tab | Tab |
| Table | Table |
| Row | Row |
| Cell | Cell |
| Paragraph | Para |
| Line | L |
| Sentence | Sent |
| Word | W |
| Character | C |
レイアウト・ファイルは、CreateCcoFromLayout、FindTableValueRegEx などの他の Datacap アクションで使用するためのもので、考えられるコンポーネントのリストは、それらのアクションの使用を支援することを目的としています。 カスタム・アクションまたはカスタム・プロセスによる layout.xml ファイルの直接的な読み取りおよび使用はサポートされていません。 また、ファイルのフォーマットと内容は、以降のリリースで予告なしに変更される場合があります。
サポートされるファイル形式
Recognize アクションは、モノクロ画像、カラー画像、および PDF ファイルを処理できます。 このアクションの一般的な使用法は、TIFF 画像などの画像ファイル上のテキストを認識することです。 ロスレス圧縮を使用して画像を保存することを強くお勧めします。
PDF 文書を処理する場合、このアクションは、ページ上の組み込みテキストと画像のどちらを使用するかを決定します。 テキストが組み込まれていないテキスト画像がある場合は、その画像も認識されます。 このアクションは PDF を直接認識でき、認識結果をレイアウト・ファイルに入れますが、認識済みページについて抽出 TIFF 画像を作成しないため、認識結果は、画像を必要とする他のアクション (パネルの検証や画像に対して実行されるその他のアクションなど) では使用できません。 このアクションがマルチページ PDF に対して指定された場合、1 つのレイアウト・ファイルのみ作成され、PDF 内の各ページの DCO ページ・オブジェクトは作成されません。 PDF 文書を認識する場合は、変換アクション・ライブラリーのアクション PDFFREDocumentToImage を使用することをお勧めします。これを使用することで、文書内の各ページに対して画像ファイルと DCO ノードも作成されます。 PDFFREDocumentToImage を使用すれば、認識の前に画像品質を向上させるために、Datacap アクションで提供されるさまざまな画質向上を使用できます。
CCO のロード
CCO は、ページの認識済みテキストを処理するために、検証パネルと認識アクションによって使用されます。 CCO には、テキストと、認識された文字ごとの位置がすべて入っています。 これで、テキスト関連アクション (Locate アクションなど) を操作できます。 検証パネルで「クリック・アンド・キー」機能を使用するには、CCO がロードされている必要があります。 「RecognizePageOCR_A」アクションは、CCO を 1 つのステップで自動的に作成します。 「Recognize」アクションは、直接 CCO を作成することはありません。 Recognize は代わりに、中間レイアウト・ファイルを作成します。 CCO をレイアウト・ファイルから作成するためには、認識を行った後で、SharedRecognitionTools にあるアクション CreateCcoFromLayout を呼び出す必要があります。 CreateCcoFromLayout が実行されると、CCO が作成され、後続のアクションと検証パネルで CCO を使用できます。 データによっては、CreateCcoFromLayout の呼び出し後に NormalizeCCO の呼び出しが必要になる場合があります。
認識アクションによる同時ページ認識
バッチ・レベルまたは文書レベルでの同時ページ認識は、「プレビュー」機能として提供されていることに注意してください。 通常、Recognize アクションはページ・レベル DCO ノードに接続されます。 ルール・エンジンがページ・オブジェクトを反復処理すると、そのページに接続された Recognize アクションを実行するページごとにルールが実行されます。 単一バッチ内では、これにより各ページが 1 ページずつ順番に認識されます。 Recognize アクションはまた、同一バッチ内で同時認識を実行するために、文書ノードまたはバッチ・ノードにも接続されます。
文書レベルまたはバッチ・レベルで呼び出されると、Recognize アクションは呼び出し元オブジェクト下でページの同時認識を実行します。 文書オブジェクトに対して呼び出された場合は、その文書の下にあるすべてのページが同時に認識されます。 バッチ・オブジェクトに対して呼び出された場合は、バッチ全体にあるすべてのページが同時に認識されます。 文書オブジェクトまたはバッチ・オブジェクトに接続されると、ページは並行して認識されます。 これは、認識を実行する複数の Rulerunner バッチを実行する場合と似ていますが、プロセスは異なります。 複数の Rulerunner の実行とは実行の並行性が異なるため、認識速度が同じである保証はありません。 つまり、1 つのバッチに含まれる 8 ページの同時認識の実行にかかる時間は、1 ページを含む 8 バッチをそれぞれ別個の Rulerunner プロセスで処理する場合にかかる時間とは同じにならない可能性があります。 それにもかかわらず、単一バッチ内で並行性機能を使用すると、単一バッチでの認識の実行にかかる時間を短縮できます。 もちろん、認識時間は、認識される文書のタイプや、他のプロセスからのマシンへの負荷、および別のバッチを処理している Rulerunner によるマシンへの負荷によって異なります。 エンジンは、ページ数とマシンの属性に基づいて、同時に認識するページ数を決定します。 呼び出し元 DCO ノード下に多数の待機ページがある限り、エンジンは通常、マシン内の CPU 数と同数までページを同時認識しようとするため、同時に認識するページ数を制御することはできません。 例えば、現行文書ノード下に 20 ページがあり、8 CPU のマシンを使用している場合、エンジンは最大 8 ページを同時に認識できます。 同時セット内の各ページが完了すると、エンジンは、現行文書ノードから別の待機ページの取り込みを開始します。
ターゲット・マシンの最適な負荷を判別するには、テストを実行する必要があります。 認識時間に影響を与える要因には、ページの dpi、テキストの鮮明さ、テキストの密度、ページを占めるテキストの量、マシンの CPU 速度、CPU 数、競合プロセスによる CPU 負荷などがあります。 アプリケーションが単一バッチ内でページの同時認識を実行するように構成されている場合、マシンが飽和状態になるのを防ぐために、認識を実行する Rulerunner プロセス数の制限が必要になる可能性があります。 このような状態になると、空き CPU の実行を待っている過剰な数のプロセスにマシンがその時間を振り分けるため、パフォーマンスが低下するおそれがあります。 複数のページに対する同時認識の実行には、単一ページの認識よりも多くのメモリーが必要です。 一般的に、多くの単語を含むページほど多くのメモリーを必要とします。 処理中のページ量とページ上のテキスト量によっては、メモリー不足状態が発生する可能性があります。 発生した場合は、y_maxPagesForInMemoryProcessing 変数を設定して、削減メモリー・モードを有効にします。 この変数を、削減メモリー・モードが有効になるページ数に設定してください。 例えば、変数が 10 に設定されている場合は、10 ページ以上を処理するときに、削減メモリー・モードが有効になります。 この変数は、Datacap Studio を使用してセットアップ DCO で構成するか、rrSet を使用して実行時に設定することができます。 また、変数「y_LowMemoryMode」を「1」に設定すると、できるだけ少ないメモリーを使用するようエンジンに通知されます。 これらの設定が有効になっているときにメモリー不足状態の発生が継続する場合は、同時認識用に構成された最大ページ数を減らすように、またはページ・レベル・ノードに対してのみ認識を呼び出すように、アプリケーションを変更する必要があります。
メモリー使用を制限する例:
rrSet("10", "@X.y_maxPagesForInMemoryProcessing")
rrSet("1", "@X.y_LowMemoryMode")
Recognize()
バッチ・ノードまたは文書ノードに対して呼び出された場合は、そのノード下のすべてのページが認識されます。 ノード下にあるすべてのページを認識するのは、望ましくないか、無駄の多いものと思われます。 例えば、一部のページが区切りページであったり、ページが重要でなかったり、認識を必要とするものがページになかったりする場合があります。 Recognize アクションを呼び出す前に DCO 変数を設定することにより、どのページを認識するかを制御することができます。 typesToExclude、typesToInclude、および statusToExclude の 3 つの変数が使用できます。 組み込む、または除外するページのタイプを指定するために構成する必要があるのは、これらの変数のうち 1 つだけです。
特定のページ・タイプを除外するには、変数「typesToExclude」を、認識から除外するページ・タイプのコンマ区切りリストに設定します。
特定のページ・タイプを組み込むには、変数「typesToInclude」を、認識するページ・タイプのコンマ区切りリストに設定します。他のタイプは無視されます。
特定のページ状況を除外するには、変数「statusToExclude」を、認識から除外するページ状況のコンマ区切りリストに設定します。
複数のフィルターを指定すると、次の優先順位が適用されます。 「statusToExclude」は「typesToInclude」を指定変更し、「typesToInclude」は「typesToExclude」を指定変更します。
例えば、文書レベルで認識を実行していて、文書にページ・タイプ Main_Page、Trailing_Page、および Separator のページがある場合、認識アクションの前に次のように rrSet を呼び出すことで、Separator ページを認識から除外するように変数 typesToExclude を設定できます: rrSet("Separator", "@X.typesToExclude")
変数「y_sr」が「1」に設定されたページもスキップされます。「1」に設定すると、他の設定とは無関係に、ページは除外されます。 この変数は、Datacap Studio の「ゾーン」タブにある OCR/A プロパティー・タブから「認識のスキップ (Skip Recognition)」を選択することにより、セットアップ時に構成することができます。 セットアップ DCO で構成した場合は、そのタイプのすべてのページで変数が実行時に設定されます。 この変数はまた、スキップする必要のあるページに対して実行時に設定することもできます。 例えば、アプリケーション・ルールが実行時にページをスキップすることを決定する場合は、ルールでこの変数を設定できます。 後続のルールが Recognize を呼び出したとき、この変数が設定されたページは認識されません。
バッチ・レベルまたは文書レベルでの Recognize の呼び出しには、以下のようなページに関する制限があります。
- ページは単一ページ画像でなければなりません。 PDF またはマルチページ画像は使用できません。
- 「セルあたり 1 行 (Single Line Per Cell)」を有効にするエンジン設定は有効にできません。
- 表の位置を指定するフィールドの使用はサポートされていません。
バッチ・レベルまたは文書レベルで複数のページを同時に認識する場合、ページ認識設定は同じでなければならず、Recognize アクションが呼び出されるレベルで設定されなければなりません。 認識されるすべてのページで、同じエンジン構成設定を使用する必要があります。 例えば、デスキュー、自動回転、アグレッシブ・テキスト認識などのための設定を行う場合、この設定は、Recognize アクションを呼び出す DCO オブジェクトに対して行わなければなりません。このようにすると、すべてのページで同じ設定が使用されます。
ページ・レベル・オブジェクトに対して設定を行った場合、Recognize がバッチ・レベルまたは文書レベルで呼び出されると、これらの設定は無視されます。 同じ言語認識パラメーターがすべてのページに適用されます。 さまざまな言語のページを Recognize の同じ呼び出しで認識する場合、言語構成の説明がある RecognizeOCRA アクション・ライブラリーのトップレベル・ヘルプ・トピックに記載されているとおり、考えられるすべての言語が指定されます。 例えば、一部のページが英語で、一部がフランス語、残りがスペイン語の場合、Recognize アクションが呼び出されるバッチ・ノードまたは文書ノードですべての言語を指定する必要があります。
カスタム・パラメーター
- DetectPictures
- デフォルトでは、エンジンはヒューリスティックを使用して、ピクチャーと思われるページの領域を判別します。 認識自体と同様に、ピクチャー検出では、成功が常に保証されるとは限りません。 ピクチャーが識別されない、ピクチャー以外の領域をピクチャーと誤解する、2 つの隣接するピクチャーが 1 つのピクチャーと見なされる、などの問題が考えられます。検出はデフォルトではオンになっています。 この設定を無効にするには、DCO 変数 y_DetectPictures を「0」に設定します。
- y_DetectFontFormatting
- y_DetectFontFormatting は、文書レベルで認識エンジンによってフォント・フォーマット検出を実行するかどうかを指定します。 これは、認識されたページのレイアウト XML にリストされたスタイルに対して効果があります。 DCO でこの値を「0」に設定してこの設定を無効にし、y_DetectFontFormattingAtPageLevel が有効になっていると、フォント・サイズがより正確に認識される場合があります。 定義しない場合、この設定はデフォルトで有効になります。
- y_DetectFontFormattingAtPageLevel
-
DCO で値を「1」に設定することによって y_DetectFontFormattingAtPageLevel が有効になっている場合、エンジンはフォント・パラメーターの検出を試み、ページの下付き文字、上付き文字、イタリック・タイプ、小文字の詳細処理を有効にします。 この設定を有効にし、y_DetectFontFormatting 設定を無効にすると、レイアウト XML で指定されているようにフォント・サイズの検出が向上する場合があります。 定義しない場合、この設定はデフォルトで無効になります。
表の識別
Recognize アクションによって作成されたレイアウト・ファイルを使用して全ページ認識を実行する場合、一部の認識エンジンは、文書上の表を識別できます。 他の OCR/A 認識アクションはこの機能をサポートしません。 テキストが表として認識された場合、このことは、認識された語に関して追加のメタデータが内部的に保管されていることを意味します。 この追加のメタデータには、テキストのセル情報と、行および列の位置が格納されています。 この表メタデータは、レイアウト・ファイルからのブロック機能をサポートする後続のアクションで使用できます。 これは「請求項目」機能を使用するための代替方法です。 「請求項目」機能は、RecognizePageOCR_A を使用して認識エンジンで表を識別することなく、認識されたデータを表として処理します。
Recognize アクションは、ページ上の表を検出して行と列を識別するよう試みます。 表が検出されると、認識された表を操作する以降のアクションで表構造を使用できます。 文字認識と同様に、表の行と列の 100% の正確度は保証されません。 表は、ヒューリスティックを使用し、またその性質によって検出されるため、似た表のあるページでは、かなり異なった結果になる場合があります。
この機能が必要な場合は、アプリケーションで処理するさまざまな表でテストを行い、必要な機能を提供するために正確性が十分であるかどうかを判別するのが最も良い方法です。 使用したい手法では表認識の正確性が十分でない場合は、手法を変更することをお勧めします。
人間の目には良好に見えても、表の一部が期待どおりに認識されていない場合があります。 例えば、表の一部が表構造の外側に残っていたり、行または列が表の見かけからは予想されないような結合のしかたをしていたりすることがあります。 文書内の表がエンジンでうまく識別されていない場合は、文書内の表データを処理するために、行項目を使用するなど、別の方法を検討してください。
- 表は、表の行と列を識別するグリッド・ラインを使用して明確に定義されている必要があります。
- 表構造を検出しようとしている場合は、行の削除を行わないでください。
- セルは相互に交差してはなりません。
- セルはすべて長方形の形状でなければなりません。
今後の製品の更新で、ブロックと表の検出方法が変更される可能性があります。 アプリケーションがブロック検出または表検出を使用してデータを処理する場合は、アプリケーションが引き続き望ましい動作をすることを確認するために、常にテストを行ってください。 そうでないと、構造と検出の変更に適応するためにアプリケーションの変更が必要になる場合があります。
表検出
表検出はデフォルトで有効であり、ページ・レベル変数 y_DetectTables を「0」に設定することで無効にできます。例: rrSet("0","@X.y_DetectTables")
表セルあたり単一行を強制
表に 1 つだけ行が含まれていても、エンジンが表セルごとに複数行を認識する場合は、DCO 変数 y_SingleLinePerCell を「1」に設定することで、行を単一行と認識するようエンジンに指示できます。例: rrSet("1","@X.y_SingleLinePerCell")
この設定を有効にすると、表検出が低下したり、セルごとに単一行を作成しないことがあります。 この設定が文書に適切かどうかを判断するために、さまざまな表をテストすることをお勧めします。
区切り文字による表の分割
表レイアウトの識別時に、エンジンはグリッド・ラインと独自のヒューリスティックを使用して、表の行と列を判別します。 このとき、エンジンによって作成されたセルが、ページ上でグリッド・ラインによって定義されたものとは異なるものになることがあります。例えば、セル内で複数行を示すグリッド・ラインが表にあっても、これらの行が単一行セルとして解釈されることがあります。 DCO 変数 y_SplitOnlyBySeparators を「1」に設定すると、表のレイアウトの識別時にグリッド・ラインのみを使用するようエンジンに指示できます。 例: rrSet("1","@X.y_SplitOnlyBySeparators")。 この設定を有効にすると、識別をガイドするためにグリッド・ラインを使用し、表示されているグリッド・ラインにより厳密に適合する表レイアウトを提供するよう、エンジンに指示が出されます。 この設定はデフォルトではオフになっています。
y_SplitOnlyBySeparators が有効になっている場合、エンジンはグリッド・ラインなしで表を認識しようとはしません。
アグレッシブ表検出
オプションの設定により、アグレッシブ表検出を実行するようエンジンに指示が出されます。 変数 y_AggressiveTableDetection を「0」に設定するとこの機能が無効になり、「1」に設定するとアグレッシブ・モードが有効になります。 デフォルトでは、この設定は有効になっています。 どのモードが文書に適切に機能するかを確認するために、この設定をオン/オフしてテストを行うことをお勧めします。
徹底分析
徹底分析モードを有効にすると、複雑なケースでページ・レイアウト分析の品質を向上させることができます。 この機能は、Recognize アクションを呼び出す前に、ページ・・レベル DCO 変数 y_EnableExhaustiveAnalysisMode を「1」に設定することで有効にできます。 この設定を指定すると、表検出が向上しますが、認識速度が低下するおそれがあります。 この設定はデフォルトではオフになっています。
表位置のゾーニング
表の位置 / ゾーンを識別することによって、表識別を向上させることができる場合があります。 エンジンが表境界をうまく検出していない場合や、表境界を識別するためのグリッド・ラインが表にない場合は、これによって表識別が向上する可能性があります。
表の位置が常にわかるようにページで指紋を採ることが可能な場合、表境界を識別するために表領域をゾーニングできます。 認識エンジンで表ゾーンを識別できるようにするには、変数 y_TableZone を使用して、表ゾーンを含んでいるフィールドの名前を指定します。例えば、「MyTable」というフィールドが現行ページにあり、そのフィールドのゾーンがページ上の表位置を識別する場合、アクション rrSet("MyTable", "@X.y_TableZone") を使用すると、エンジンはゾーンを使って表を識別します。
ユーザー提供のゾーンを使用して表が認識される場合は、y_TableZone に指定されたフィールドのサブフィールドが表の内容を使用して作成されます。複数の表がページにある場合、この方法で識別できる表は 1 つのみです。ページ上の複数の表を識別する必要がある場合は、自動検出を使用するか、表ごとに異なるゾーンを使用してページを複数回処理するか、または別の方法を採らなければなりません。 表の位置が認識前に予測も識別もできない場合は、自動検出を使用するか、別の方法を採る必要があります。
表の自動検出で誤りが生じているような状況では、グリッド・ラインがない場合と同様に、表ゾーンによって良好な結果が得られることをエンジンに指示します。 ただし、この方法も 100% の正確性を保証するものではなく、認識されたデータを必要に応じてメッセージ送信するために追加のカスタム・ステップの実行が必要になる場合があります。
ページ認識のスキップ
ページに対する認識は、Datacap Studio の OCR/A プロパティー設定を使用し、「認識のスキップ (Skip Recognition)」プロパティーを「はい (yes)」に設定することによってスキップできます。 認識アクションがページ・オブジェクトに対して呼び出されると、認識はスキップされ、アクションは「True」を返します。 また、DCO 変数「y_sr」を「1」に設定することによって認識をスキップすることもできます。
例
MyAction("123")これはアクションの例です。