
開発者の観点から見た新製品の重要な機能は、非常にシンプルなプログラムインターフェイスであり、事前設定を必要とせずにすぐに使用できることです。 この記事では、製品の使用方法を示します。
すでに 、ユニバーサルデータエントリソリューションABBYY FlexiCapture Engineについて、特定の種類のドキュメントのカスタマイズの難しさ、および自己学習テクノロジーを実装してこれを処理する方法について説明しました。 この分野は大幅に進歩していますが、開発者によるソリューションの初期構成にはまだ何らかのアクションが必要です。 現在、実用的なソリューションを簡単に入手できますが、 最適なソリューションを入手するには、経験、知識、および時間が必要です。
一方、多くの一般的な広範なドキュメントクラスでは、事前にすべての設定を完了し、狭いドキュメントクラスで動作するように最適化され、開発者による事前の構成を必要としない特別なソリューションを作成できます。 そのようなソリューションの例は、 ABBYY PassportReader SDKです。
PassportReader SDKで使用できるドキュメントの主な種類は、 パスポート またはIDカード 、 運転免許証 、 パスポートです。 ロシア連邦では出生証明書も利用できます。 CIS諸国の場合、一部のドキュメントはまだ利用できません。
これらのタイプのドキュメントは需要があり、同時に、細い線の形で複雑な背景を持つことが多いため、処理が非常に困難です- ギョーシェ ; 明度ではなく色のみで対照的な碑文。 特別なフォント。 さらに、リストされたドキュメントの多くは、いくつかのオプションの形式で存在します(古いサンプルと新しいサンプル、生体認証と通常のパスポートなど)。 これらすべては、 FlexiCapture Engineなどの汎用ツールを使用して、そのようなドキュメントで高品質の結果を独立して取得することは、完全に簡単な作業ではないという事実に要約されます。 そして、ここにPassportReader SDKがあります 。
はじめに
最も簡単なケースでの製品のすべての作業は、エンジンオブジェクトの作成とRecognizeメソッドの呼び出しに要約されます。
var engine = new ABBYY.PassportReaderSdk.RecognitionEngine(); try { var result = engine.Recognize( fileName, "Passport_RU" ); ... } finally { engine.Close(); }
NB。 RecognitionEngineはIDisposableインターフェイスを実装し、このインターフェイスを必要とする構造で標準的な方法で使用できます。 したがって、上記の例では、 try ... finallyの代わりにusingブロックを使用できます。これは完全に同等です。
NB。 画像は、ファイルから読み取るか、エンジンメソッドを使用してPassportReader SDKに組み込まれた手段でスキャンできます。 スキャン()
抽出されたフィールドを直接操作できます。
string lastName = result.FieldValue( "LastName", "" ); string firstName = result.FieldValue( "FirstName", "" ); string middleName = result.FieldValue( "MiddleName", "" ); string dateOfBirth = result.FieldValue( "DateOfBirth", "" ); string placeOfBirth = result.FieldValue( "PlaceOfBirth", "" );
NB。 すべてのタイプのドキュメントのデータスキームは統一されています。同じ意味を持つフィールドは、ドキュメントのタイプに関係なく同じ名前を持ちます。 つまり、姓、名、ミドルネーム、生年月日、生年月日が必要な場合、上記のコードはすべての種類のドキュメントで同等に機能します。
または、結果をXMLとして取得し、ファイルに保存します。
string xmlBody = result.GetXml( ... ); string xml = string.Format( "<?xml version='1.0' encoding='UTF-8'?>{0}", xmlBody ); System.IO.File.WriteAllText( fileName, xml, Encoding.UTF8 );
NB。 結果のXMLドキュメントは、製品とともにインストールされるXMLResult.xsdスキーマに準拠しています
実際、これがほとんどすべてです。 上記の基本的な機能に加えて、フィールドごとに、画像内で見つかったフィールドの長方形を取得し、個々の文字を確実に認識できます。
説明した機能は、例を実装するのに十分です。下のスクリーンショットを参照してください。 例は、ドキュメントの画像をダウンロードまたはスキャンし、認識し、結果をXMLまたはCSVで編集および保存し、必要に応じて外部アプリケーションを実行して結果をさらに処理できる、すぐに使用できるアプリケーションです。 この例にはソースコードが付属しているため、開発者はニーズに合わせて簡単に変更できます。

変更を加えなくても、この例には外部システムとの統合のための最も簡単な手段が含まれています。

この記事の執筆時点で、 PassportReader SDKドキュメントは次の国で利用できます。

技術的な詳細
実装に関しては、 PassportReader SDKは、 大幅に削減されたバージョンのFlexiCapture Engineの .Netラッパーです(不要な辞書が削除され、配布パッケージのサイズが数回縮小されました)。 ラッパーは、すべての環境設定とイメージの準備を実行し、非常にシンプルなソフトウェアインターフェイスをユーザーに提示します。
PassportReader SDKのネイティブ環境は.Netですが、すべてのインターフェイスはComVisible属性で宣言されています。 したがって、 PassportReader SDKは、COMと連携できる開発環境から直接使用できます。 C ++およびDelphiでの使用例が製品に含まれています。
NB。 .Netイデオロギーによって導入されたいくつかのニュアンスがあります。 たとえば、COMオブジェクトを作成するには、対応するアセンブリをGACまたは呼び出し元アプリケーションのEXEアプリケーションと同じディレクトリに登録する必要があります。 つまり、要件は.Netアセンブリの要件とまったく同じです。
PassportReader SDKには、レギュラーとサーバーの2つのバージョンがあります。 通常バージョンはマルチスレッドをサポートしていないため、PRのすべての作業は1つのスレッドから実行する必要があります。 サーバーバージョンは複数のストリームをサポートしています。 同時に、利用可能なすべてのプロセッサコアの使用と並行して作業が実行されます。
PassportReader SDKは、 FlexiCapture Engineのラッパーです。 したがって、 PassportReader SDKでできることはすべてFlexiCapture Engineを使用して実装されます。 FlexiCapture Engineがもっと多くのことができるという事実は、 言うまでもありませんが、明らかです。
最新の製品情報は、ABBYY Webサイトで確認できます。
アレクセイ・カリュジニー、
開発者製品部門