外部ファイルやデータベースを操作するグローバル関数の引数には、変数を使用しないでください。
数学関数および比較関数
| 定義 | 説明 |
|---|---|
Area Max( Area a1, Area a2 ) | a1 と a2 のうち大きい方の値を返します。 |
Area Min( Area a1, Area a2 ) | a1 と a2 のうち小さい方の値を返します。 |
Distance abs( Distance ) | 距離の絶対値を返します。 |
Distance Min( Distance d1, Distance d2 ) | d1 と d2 のうち小さい方の値を返します。 |
Distance Max( Distance d1, Distance d2 ) | d1 と d2 のうち大きい方の値を返します。 |
Int abs( Int ) | 数値の絶対値を返します。 |
Int Ceil( Real ) | 引数以上の最小の整数を返します。 |
Int Floor( Real ) | 引数以下の最大の整数を返します。 |
Int Max( Int n1, Int n2 ) | n1 と n2 のうち大きい方の値を返します。 |
Int Min( Int n1, Int n2 ) | n1 と n2 のうち小さい方の値を返します。 |
Int Round( Real ) | 引数に最も近い整数を返します。 |
Real Min( Real d1, Real d2 ) | d1 と d2 のうち小さい方の値を返します。 |
Real Max( Real d1, Real d2 ) | d1 と d2 のうち大きい方の値を返します。 |
座標および区間の関数
| 定義 | 説明 |
|---|---|
Area ObjectsArea( Rect, ImageObjectType ) | 指定した矩形内にある、指定した型のオブジェクトの面積です。グローバル座標で動作します。 |
Area ObjectsIntersectionArea( Rect, ImageObjectType ) | 指定した矩形内にある、指定した型のオブジェクトの面積と、指定した矩形の外にはみ出している指定した型のオブジェクトとの交差領域の面積です。グローバル座標で動作します。 |
Logic IsOnSameLine( Hypothesis, Hypothesis ) | 仮説同士が垂直方向に交差しているかどうかを判定します。 |
Region FormRegion( RectArray included, RectArray excluded ) | included 矩形の配列を含み、excluded 矩形の配列を除外する領域を作成します。 |
XCoordinate Min( XCoordinate x1, XCoordinate x2 ) | x1 と x2 のうち小さい値を返します。 |
XCoordinate Max( XCoordinate x1, XCoordinate x2 ) | x1 と x2 のうち大きい値を返します。 |
XCoordinate MiddleBetween( XCoordinate x1, XCoordinate x2 ) | ( x1 + x2 ) / 2 で計算した X 座標を返します。 |
XCoordinate Between( XCoordinate x1, XCoordinate x2, Real ratio ) | x1 + ( x2 - x1 ) * ratio で計算した X 座標を返します。 |
YCoordinate Min( YCoordinate y1, YCoordinate y2 ) | y1 と y2 のうち小さい値を返します。 |
YCoordinate Max( YCoordinate y1, YCoordinate y2 ) | y1 と y2 のうち大きい値を返します。 |
YCoordinate MiddleBetween( YCoordinate y1, YCoordinate y2 ) | ( y1 + y2 ) / 2 で計算した YInterval を返します。 |
YCoordinate Between( YCoordinate y1, YCoordinate y2, Real ratio ) | y1 + ( y2 - y1 ) * ratio で計算した YInterval を返します。 |
XInterval MiddleBetween( XInterval x1, XInterval x2 ) | ( x1 + x2 ) / 2 で計算した XInterval を返します。 |
XInterval Between( XInterval x1, XInterval x2, Real ratio ) | x1 + ( x2 - x1 ) * ratio で計算した XInterval を返します。 |
YInterval MiddleBetween( YInterval y1, YInterval y2 ) | ( y1 + y2 ) / 2 で計算した YInterval を返します。 |
YInterval Between( YInterval y1, YInterval y2, Real ratio ) | y1 + ( y2 - y1 ) * ratio で計算した YInterval を返します。 |
文字列関数
| Definition | 説明 |
|---|---|
String Chr( Int ) | 指定された文字の Unicode コードを使用して文字列を返します (コードは 10 進数で記述する必要があります) 。 |
String LCase( String ) | 指定された文字列のすべての文字を小文字に変換した文字列を返します。 |
String RealToStrVariants( Real value, String fractionalPartSeparators, Int maxDigitsCountInFractionalPart = 2 ) | 指定された実数 value、小数点区切り文字 fractionalPartSeparators、および小数部の最大桁数に基づいて、縦棒 (|) で区切られた文字列表現を作成します。たとえば、引数 19、".,"、2 の場合、結果は "19|19.0|19.00|19,0|19,00" になります。 |
String Str( Int )String Str( Logic )String Str( Real )String Str( XInterval )String Str( YInterval )String Str( DistInterval )String Str( FuzzyRect )String Str( Hypothesis )String Str( RectArray )String Str( Region )String Str( Area )String Str( Quality )String Str( Distance )String Str( PageInterval ) | データ型の文字列表現です。 |
String RemoveSpaces( String ) | 指定された文字列からすべての空白を削除した文字列を返します。 |
String UCase( String ) | 指定された文字列のすべての文字を大文字に変換した文字列を返します。 |
変換および検証関数
| 定義 | 説明 |
|---|---|
Int LogicToInt( Logic value ) | value が true の場合は 1、false の場合は 0 を返します。 |
Int StrToInt( String inputString, Logic isStrictMode = false ) | inputString のstring valueを整数に変換した結果を返します。スペースは無視されます。isStrictMode パラメーター (既定値は false) は、文字列に数字とスペース以外の文字を含められるかどうかを指定します。isStrictMode = false で、文字列に数字またはスペース以外の文字が含まれている場合、その文字以降のすべての文字は無視されます。このfunctionを呼び出す前に、文字列を変換できることを確認してください。これには、IsInt functionを使用します。 |
Int StrToIntFuzzy( String, Logic isStrictMode = false ) | 文字列 inputString の値を整数に変換した結果を返します。このとき、文字列内で発生する可能性のある認識エラーを考慮します (IsIntFuzzy 関数の説明を参照) 。変換時には空白は無視されます。isStrictMode パラメーター (既定値は false) は、文字列に数字以外の文字、数字に見える文字、または空白を含められるかどうかを指定します。isStrictMode = false で数字以外の文字が見つかった場合、その文字以降のすべての文字は無視されます。変換を開始する前に、文字列を安全に変換できるかどうかを確認するため、IsIntFuzzy 関数を呼び出します。 |
Logic IsInt( String inputString, Logic isStrictMode = false ) | inputString 文字列を安全に整数へ変換できるかどうかを確認します。isStrictMode Parameter (既定値は false) は、文字列に数字と空白以外の文字を含められるかどうかを指定します。 |
Logic IsIntFuzzy( String inputString, Logic isStrictMode = false ) | 文字列inputStringが、文字列内で起こり得る認識エラーを考慮しても、安全に整数に変換できるかどうかを確認します。この種の変換では、数字 (つまり文字0123456789) だけでなく、数字に見える文字 (たとえばoOBsl) も整数として変換します。isStrictMode Parameter (既定ではfalse) は、文字列に数字、数字に見える文字、または空白以外の文字を含められるかどうかを判定します。 |
Logic IsReal( String numberString, String separators = ".,", Logic isStrictMode = false ) | inputString 文字列を実数に変換できるかどうかを確認します。使用可能な小数点区切り記号の一覧は、separators 引数で設定します。既定では、ピリオド、カンマ、およびユーザー定義の区切り記号 (オペレーティングシステムの地域設定で指定。RegionalDecimalPoint を参照) が使用できます。isStrictMode パラメーター (既定値は false) は、文字列に数字、空白、区切り記号以外の文字を含められるかどうかを指定します。 |
Logic IsRealFuzzy( String, String separators = defaultDecimalSeparators, Logic isStrictMode = false ) | 文字列inputStringが、文字列内で起こり得る認識エラーを考慮したうえで、安全に実数に変換できるかどうかを確認します (IsIntFuzzy functionの説明を参照) 。使用可能な小数区切り記号の一覧は、separators引数で指定します。既定では、次の区切り記号を使用できます。ピリオド、カンマ、およびユーザーのオペレーティングシステムの地域設定で指定された区切り記号です (RegionalDecimalPointを参照) 。isStrictModeパラメーター (既定ではfalse) は、文字列に数字、数字に見える文字、スペース、または区切り記号以外の文字を含めてもよいかどうかを判定します。 |
Quality ValidateByDB( String word, String connectionString, String selectString, Int maxErrors, Real maxErrorsPart, Logic ignoreSpaces, Int maxRecordsCount = 1000 ) | 指定した単語をデータベースと照合して検証します。詳細は、FlexiLayout language でのデータベースとテキストファイルを参照してください。connectionString 引数では、データベースへの接続文字列を設定します。selectString 引数では、SELECT コマンドで始まる SQL クエリを設定します。maxErrors 引数では単語内のエラーの絶対最大数を設定し、maxErrorsPart では単語内のエラーの相対最大数を設定します。ignoreSpaces 引数は、比較時に空白を考慮するかどうかを指定します。検索を高速化するため、最初の maxRecordsCount 個の候補のみが使用されます (既定値は 1000 です) 。指定した単語とデータベース内の最良一致とのマッチング品質を返します。この関数は、Value メソッドが返す仮説の文字列値を指定した候補とあいまい照合するために、Advanced Post-Search Relations field で使用できます。 |
Quality ValidateByFile( String word, String fileName, Int maxErrors, Real maxErrorsPart, Logic ignoreSpaces, Int maxRecordsCount = 1000 ) | 指定された単語を、使用可能なフレーズ候補が一覧表示された fileName ファイル内の候補と比較してチェックします。詳しくは、FlexiLayout language でのデータベースとテキストファイルを参照してください。maxErrors 引数は単語内で許容されるエラーの絶対最大数を設定し、maxErrorsPart は単語内で許容されるエラーの相対最大数を設定します。ignoreSpaces 引数は、比較時にスペースを考慮するかどうかを指定します。指定された単語と、テキストファイル内で最もよく一致する候補とのマッチング品質を返します。検索を高速化するため、最初の maxRecordsCount 個の候補のみが使用されます (既定値は 1000 です) 。この関数は、Value メソッドが返す仮説の文字列値を指定された候補とあいまい照合するために、Advanced Post-Search Relations field で使用できます。 |
Quality ValidateByText( String word, String variants, Int maxErrors, Real maxErrorsPart, Logic ignoreSpaces ) | 指定された単語を、列挙された候補と照合して確認します。maxErrors 引数は単語内のエラーの絶対最大数を、maxErrorsPart は単語内のエラーの相対最大数を設定します。ignoreSpaces 引数は、比較時にスペースを考慮するかどうかを指定します。指定された単語と、variants 引数に列挙された候補のうち最もよく一致するものとのマッチング品質を返します。この関数は、Value メソッドが返す hypothesis の文字列値を指定した候補とあいまい照合するために、Advanced Post-Search Relations field で使用できます。 |
Real StrToReal( String numberString, String separators = ".,", Logic isStrictMode = false ) | inputString 文字列を実数に変換した結果を返します。スペースは無視されます。isStrictMode パラメーター (既定値は false) は、文字列に数字、スペース、区切り記号以外の文字を含められるかどうかを指定します。isStrictMode = false で、文字列に 2 つ目の小数点区切り記号、または数字でもスペースでもない文字が含まれている場合、その文字以降はすべて無視されます。この関数を呼び出す前に、文字列を変換できることを確認してください。確認には、IsReal 関数を使用します。 |
Real StrToRealFuzzy( String, String separators = defaultDecimalSeparators, Logic isStrictMode = false ) | 文字列 inputString の値を、文字列内で起こり得る認識エラーを考慮して実数に変換した結果を返します (IsIntFuzzy function の説明を参照) 。変換時にはスペースは無視されます。isStrictMode パラメーター (既定では false) は、文字列に数字、数字に見える文字、スペース、または区切り記号以外の文字を含めてもよいかどうかを指定します。isStrictMode = false で、2 つ目の小数区切り記号または数字以外の文字が検出された場合、それ以降の文字はすべて無視されます。変換を開始する前に、文字列を安全に変換できるかどうかを確認するため、IsRealFuzzy function を呼び出してください。 |
StrToInt の例:
Int integralValue;
String valueFromDocument = SearchElements.StaticText.Value();
Logic canBeConverted = IsInt(valueFromDocument, true);
if(canBeConverted) then integralValue = StrToInt(valueFromDocument, true);
ValidateByDB の例:
if not IsNull then ValidateByDB(Value(), "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\\FCS\\Companies.mdb", "SELECT Name FROM Companies", 1, 0.3, true, 500);
ValidateByFile の例:
if not IsNull then ValidateByTextFile(Value(), "Companies.txt", 1, 0.3, true, 500);
ValidateByText の例:
if not IsNull then ValidateByText (Value(), "ABBYY|Flexi Capture", 1, 0.3, true);
StrToReal の例:
Real realValue;
String valueFromDocument = SearchElements.StaticText.Value();
Logic canBeConverted = IsReal(valueFromDocument, ".");
if(canBeConverted) then realValue = StrToReal(valueFromDocument, ".");
データベース関数とファイル関数
| 定義 | 説明 |
|---|---|
Int RecordCount( String connectionString, String selectString ) | クエリによって返されるレコード数を返します。このセクションの Record 関数の例を参照してください。 |
Logic ExecuteSQL( String connectionString, String queryString ) | ユーザーの SQL クエリ queryString を実行します。引数 connectionString でデータベースの接続文字列を設定します。 |
Logic TestDBConnection( String connectionString ) | データベース接続をテストします。引数 connectionString には接続文字列を指定します。 |
Logic TestDBSelect( String connectionString, String selectString ) | データベースにアクセス可能かどうか、および SQL クエリが正しいかどうか (指定したテーブルと field が存在するか) を確認します。引数 connectionString には接続文字列を指定します。引数 selectString には SELECT コマンドで始まる SQL クエリを指定します。 |
Logic TestFileAccess( String fileName ) | テキストファイルにアクセスできるかどうかを確認します。 |
Logic WriteToFile( String filename, String text ) | text 文字列を filename ファイルに追加します。この名前のファイルが存在しない場合は、新しいファイルが作成されます。 |
StringArray ReadFromXML( String filename, String xPathQuery ) | filename XML ファイルから文字列の配列を読み取ります。文字列は、指定された XPath クエリ xPathQuery を評価して取得されます。 |
StringArray Record( String connectionString, String selectString, Int index ) | 指定したレコードのデータを取得します。値が NULL のセルについては、空の文字列が返されます。 |
String ReadSingleStringFromXML( String filename, String xPathQuery ) | filename XML ファイルから文字列を読み取ります。文字列は、指定された XPath クエリ xPathQuery を評価して取得されます。 |
Void PrepareRecordset( String connectionString, String selectString, Int maxRecordsCount = 1000 ) | 高速にアクセスできるようにリクエストを準備します。このセクションの Record 関数の例を参照してください。 |
ExecuteSQL の例:
ExecuteSQL("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\\FCS\\Companies.mdb", "UPDATE Companies SET total=0");
WriteToFile の例:
WriteToFile("D:\\FCS\\logFile.txt", SearchElements.Tag.Value());
Record の例:
String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\1.mdb;";
String selectString = "SELECT SearchText, LeftPos, TopPos, RightPos, BottomPos from SearchPositions WHERE ElementName = 'DocID'";
PrepareRecordset(connectionString, selectString);
Int recordCount = RecordCount(connectionString, selectString);
String searchString;
RectArray searchArea = RectArray();
for recordIndex from 0 to recordCount - 1 {
StringArray recordArray = Record(connectionString, selectString, recordIndex);
if recordIndex == 0 then {
searchString = recordArray.GetAt(0);
} else {
searchString = searchString + "|" + recordArray.GetAt(0);
}
searchArea.Add(Rect(StrToInt(recordArray.GetAt(1)) * dt, StrToInt(recordArray.GetAt(2)) * dt,StrToInt(recordArray.GetAt(3)) * dt, StrToInt(recordArray.GetAt(4)) * dt));
}
SearchText: searchString;
RSA: searchArea;
| 演算子を使用して1つの検索文字列に結合されます。テーブルの各 field から取得した LeftPos、TopPos、RightPos、BottomPos の座標は、矩形のドット単位の座標を生成するために使用されます。生成された座標は、DocID 要素の検索領域に追加されます。
ページおよび文書の関数
| 定義 | 説明 |
|---|---|
Distance AverageLineHeight() | ページ上のテキスト行の平均の高さです。この関数は、文書の最大ページ数と最小ページ数が 1 に設定されている場合、つまり検出された文書が 1 ページのみの場合にのみ使用できます。複数ページ文書に対してこの関数を使用すると、FlexiLayout のマッチングでエラーが返されます。複数ページ文書の場合は、Page 型の対応するメソッド Page( N ).AverageLineHeight を使用してください。 |
Distance AverageInterLineInterval() | ページ上のテキスト行どうしの平均間隔です。この関数は、文書の最大ページ数と最小ページ数が 1 に設定されている場合、つまり検出された文書が 1 ページのみの場合にのみ使用できます。複数ページ文書に対してこの関数を使用すると、FlexiLayout のマッチングでエラーが返されます。複数ページ文書の場合は、Page 型の対応するメソッド Page( N ).AverageInterLineInterval を使用してください。 |
Int PagesCount() | 文書内のページ数を返します。 |
Page Page( Int PageNumber ) | 指定されたページを表す型を返します。 |
Rect DocumentRect() | 文書全体の Rectangle を返します (グローバル座標) 。 |
Rect PageRect() | 画像全体の Rectangle です。この関数は、文書の最大ページ数と最小ページ数が 1 に設定されている場合、つまり検出された文書が 1 ページのみの場合にのみ使用できます。複数ページ文書に対してこの関数を使用すると、FlexiLayout のマッチングでエラーが返されます。複数ページ文書の場合、この関数は Pre-search relations セクションでのみ使用できます。詳細については、検索領域を制限する関数を参照してください。 |
Void SetPagesCount( Int pagesCount ) | 文書内のページ数を設定します。これは Pre-search または Post-search advanced code セクションで使用します。この関数は、Header または Footer 要素、もしくはそのサブ要素から呼び出す必要があります。この関数は、文書の終了インジケーターがない文書 (Footer が存在しないか省略可能な場合) に適用されます。 |
SetPagesCount の例:
指定された要素がマッチした場合、文書は次のページで終了します:
if IsFound then SetPagesCount(PagesCount + 1);
if PageNum.IsFound and IsInt(PageNum.Value) then SetPagesCount: StrToInt(PageNum.Value);
事前認識関数
| Definition | Description |
|---|---|
Void RecognizeText() | プロジェクト設定の Pre-recognition area プロパティで指定した相対矩形内のテキストを認識します。すべての文書ページが認識対象に含まれます。 |
Void RecognizeText( IntArray pages ) | プロジェクト設定の Pre-recognition area プロパティで指定した相対矩形内のテキストを認識します。認識対象に含まれるのは、pages 引数で指定したページのみです。 |
Void RecognizeText( SearchAreaPageSetType pageSetType ) | プロジェクト設定の Pre-recognition area プロパティで指定した相対矩形内のテキストを認識します。認識対象に含まれるのは、pageSetType 引数で指定したページのみです。 |
Void RecognizeText( Rect rect ) | rect 矩形内のテキストを認識します。 |
Void RecognizeText( Rect rect, IntArray pages ) | rect 矩形内のテキストを認識します。認識対象に含まれるのは、pages 引数で指定したページのみです。 |
Void RecognizeText( Rect rect, SearchAreaPageSetType pageSetType ) | rect 矩形内のテキストを認識します。認識対象に含まれるのは、pageSetType 引数で指定したページのみです。 |
Void RecognizeText( RectArray rectArray ) | rectArray の矩形配列内のテキストを認識します。 |
Void RecognizeText( RectArray rectArray, IntArray pages ) | rectArray の矩形配列内のテキストを認識します。認識対象に含まれるのは、pages 引数で指定したページのみです。 |
Void RecognizeText( RectArray rectArray, SearchAreaPageSetType pageSetType ) | rectArray の矩形配列内のテキストを認識します。認識対象に含まれるのは、pageSetType 引数で指定したページのみです。 |
Void RecognizeText( Region region ) | region 領域内のテキストを認識します。 |
Void RecognizeText( Region region, IntArray pages ) | region 領域内のテキストを認識します。認識対象に含まれるのは、pages 引数で指定したページのみです。 |
Void RecognizeText( Region region, SearchAreaPageSetType pageSetType ) | region 領域内のテキストを認識します。認識対象に含まれるのは、pageSetType 引数で指定したページのみです。 |
RectArray RecognizedRects() | 事前認識された矩形の配列を出力するためのデバッグ関数です。 |
