Skip to main content
ABBYY FlexiLayout Studio には、請求書プロジェクト向けの追加の FlexiLayout を開発するための特長がいくつかあります。
  • 請求書プロジェクトのメイン FlexiLayout の適用時に検出されたフィールドの領域を基準に、要素の位置を指定できます。
  • ベンダーおよび事業部門の識別子を、Document Definition のデータ セットへのリクエストで使用できます。
  • FlexiLayout のキーワードのリストやその他のパラメーターを XML ファイルにエクスポートできるため、FlexiLayout や Document Definition を編集しなくてもそれらを編集できます。

追加の FlexiLayout を作成する

1

FlexiCapture でバッチを開く

FlexiCapture で、認識済みの請求書を含むバッチを開きます。
2

FlexiLayout Studio プロジェクトを作成する

ABBYY FlexiLayout Studio で新しいプロジェクトを作成します。メイン メニューで、Tools → Export Batch to FlexiLayout Studio → Create New FlexiLayout Studio Project… を選択します。
このコマンドは、お使いのコンピューターに保存されている FlexiCapture プロジェクトでのみ使用できます。Distributed バージョンの FlexiCapture を使用していて、プロジェクトがサーバーに保存されている場合は、まず Project メニューの Export Project… をクリックして、プロジェクトをコンピューターにダウンロードします。
ABBYY FlexiLayout Studio プロジェクトの接尾辞は、プロジェクト作成時点の Document Definition のバージョンを示します。
作成した ABBYY FlexiLayout Studio プロジェクトには、FlexiCapture のバッチに含まれるすべてのドキュメントに加え、認識時に検出された field region が reference layout の形で含まれています。

追加の FlexiLayout にfieldを追加する

追加の FlexiLayout にfieldを追加するには、そのfield用のブロックを作成し、その検索要素を指定します。 Document Definition 内のfieldには一意の名前が必要です。つまり、次のことを意味します。
  • fieldの検索ロジックを記述するには、一意の名前を持つブロックを作成します。
  • すでに Document Definition に存在するfieldの検索ロジックを変更するには、同じ名前のブロックを作成します。

追加のFlexiLayoutにページを追加する

新しい画像で追加のFlexiLayoutに加えた変更をテストする場合は、FlexiCapture の Batches を ABBYY FlexiLayout Studio の既存の請求書プロジェクトにエクスポートできます。Batches をエクスポートするには、Tools → Export Batch to FlexiLayout Studio → Add to Existing FlexiLayout Studio Project… をクリックします。
  • FlexiCapture の Batches は、Tools → Export Batch to FlexiLayout Studio → Create New FlexiLayout Studio Project… を選択して作成した ABBYY FlexiLayout Studio プロジェクトにのみエクスポートできます。
  • FlexiCapture の batch を ABBYY FlexiLayout Studio にエクスポートすると、その batch 用の新しい batch が ABBYY FlexiLayout Studio に作成されます。
  • 新しい Document Definition に、ABBYY FlexiLayout Studio プロジェクトで使用している Document Definition より多くの fields がある場合、エクスポートログには追加された field ごとに警告が記録されます。
  • プログラムが追加された fields もエクスポートするようにするには、追加された field ごとに、SearchElements ツリーの CommonBlockRegions ノードに同じ名前のブロックを追加します。

Document Definition からデータ セットにリクエストを送信する

サンプルリクエストは DataSetRequestSample 要素にあります。この要素はデフォルトで無効になっています。

関数

構文:
  • ABBYY FlexiLayout Studio で FlexiLayout を操作する際、データ セットにアクセスするには、Document Definition へのパスとデータ セット名を使用します。
  • コンパイル済みの FlexiLayout を FlexiCapture の Document Definition に追加した後は、データ セットへのアクセス時にその名前のみが使用されます。
  • connectionString の形式:
    注: パスの各部分は二重バックスラッシュ (\\) で区切ってください。
  • searchFields — 値を取得する列名の配列。
  • searchCriteriaColumn-Entry ペアの配列。空の場合はすべての値を返します。
    • リクエストに 1 つの field に対する複数の値が含まれる場合は、OR 演算子を使用します。
    • リクエストに、それぞれが 1 つの field にのみ対応する複数の値が含まれる場合は、AND 演算子を使用します。
    • リクエストに 1 つの field に対する複数の値と、複数の fields に対する値が含まれる場合は、1 つの field に対する複数の値を区別するために OR 演算子を使用し、複数の fields の値を結合するために AND 演算子を使用します。

画像上の外部データベースで、列を指定して行を検索する

1

列の一覧を取得する

FieldNamesOfFCDataset を使用して、インデックス番号の昇順に並んだ列の一覧を取得します。
2

列のインデックスを特定する

検索するデータが含まれる列のインデックス番号を特定します。
3

フィルターを作成する

データ セットからデータを絞り込むための条件の配列を作成します。
4

検索を実行する

列のインデックス番号とフィルター条件を SearchTextFromFCDataSet に渡します (正規表現を使用する必要がある場合は RegularExpressionFromFCDataSet) 。
このコードは、認識済みバッチが FlexiCapture からエクスポートされる際に自動生成されます。

複数の列のエントリを画像内で検索する

検索パラメーターは SearchTextFromFCDataSet 関数を呼び出すたびに置き換えられるため、この関数を繰り返し呼び出しても効果はありません。回避策として、外部データベースから文字列を取得し、それらを SearchText 関数に渡します。SearchText 関数は、各文字列を既存の検索パラメーターに置き換えるのではなく追加します。
1

列を一覧化する

検索対象のデータが含まれる列名の配列を作成します。
2

フィルターを作成する

データ セット内のデータを絞り込むためのフィルター条件の配列を作成します。
3

エントリ数を数える

RecordCountOfFCDataset 関数を使用して、返されるエントリ数を確認します。
4

クエリを準備する

PrepareRecordsetOfFCDataset 関数を使用してクエリデータを準備します。
5

各レコードを読み取る

すべてのレコードを順に処理し、RecordOfFCDataset メソッドを使用して各レコードの配列を取得します。
6

値を SearchText に渡す

配列内の各要素の値を SearchText 関数に渡します。

複合列に関する追加の考慮事項

  • FieldNamesOfFCDataset 関数は、複合列の名前が複数回含まれる array を返します。出現回数は、エンコードされた外部データベース内の列インスタンス数と同じです。 : {VendorId, VATID, Name, Name, Name, City}。この場合、外部データベースには、データ セット 内の 1 つの複合列 Name に対応する列が 3 つあります。
  • SearchCriteria に複合列に対応する field の条件が含まれている場合 (上記の例のように) 、その条件はそれらすべての列インスタンスに対してチェックされます。
  • searchFields に複合列に対応する field の条件が含まれている場合 (上記の例のように) 、結果には各列インスタンスの値の array が含まれます。 たとえば、{VendorId, VATID, Name, Name, Name, City} に対して次のように要求すると:
  • searchFields array を FieldNamesOfFCDataset 関数に渡すことで、返される columns の List を取得できます。

FlexiLayout 設定を含む XML ファイルへのリクエストを行う

FlexiLayout 設定を含む XML ファイルに対しては、ABBYY FlexiLayout Studio の Documentation で説明されている 2 つの標準関数を使用してリクエストを行うことができます。
ABBYY FlexiLayout Studio で FlexiLayout の作業時にこのファイルを使用するには、このファイルをプロジェクト フォルダーまたはそのサブフォルダーに配置します。ファイルのパスは、ABBYY FlexiLayout Studio のプロジェクト ファイルからの相対パスです。 コンパイル済みの FlexiLayout を FlexiCapture の Document Definition にロードし、additional FlexiLayout として使用する場合、XML ファイルは Templates フォルダーに配置され、編集できます。FlexiLayout が適用されると、プログラムがこのファイルへのアクセスを自動的に管理します。