
最近まで、ウェブ上では、当社の認識技術はサイト
www.abbyyonline.comでのみ「
存続 」してい
ましたが 、このサービスはエンドユーザーを対象としています。 そして、開発者向けのWeb認識APIのベータ版のリリースを発表する準備ができました。 すでに読者に馴染みのある
ABBYY FineReader Engineの「クラウド兄弟」である
ABBYY Cloud OCR SDKをご 紹介します。
私たちは長い間、あらゆる種類の「薄い」デバイスからOCRテクノロジーを使用できるようにする製品をリリースしたいと考えていましたが、デバイスやすべての種類のオペレーティングシステムを使用すると同時に、便利で安価でした。 成功したことを願っています。 ABBYY Cloud OCR SDKは従量制の支払いを提供するため、最小限の初期投資で高品質の認識機能を利用できます。
カットの下で、どのように取り組んだのか、何をしたのかについて詳しく説明します。 これまでのところ、サービスはクローズドベータテスト中ですが、すでに十分に安定しており、オープンベータの段階が近づいていると考えています。 Habrの読者を招待して、ABBYY Cloud OCR SDKの最初の「外部」ベータテスターの1人になりたいと思います。 アクセスを取得する方法について-カットの下でも。
クラウド認識APIは、多くのシナリオで使用できます。 たとえば、コアではないアプリケーションに認識機能を含めます。 または、ユーザーがドキュメントの写真を撮る携帯電話用の「軽量」アプリケーションを作成し、このドキュメントがサーバーに送信されて認識され、結果が返されます。 このシナリオでは、ほとんどすべての電話で名刺を認識するプログラムを作成できます。
Webアプリケーションに認識を追加することもできます。 サーバーにFineReader Engineをインストールすることはできますが、それなしで実行したい場合は、クラウドサービスが役立ちます。
サービスAPI
最初のバージョンでは、できるだけシンプルなままで、オペレーティングシステムやインターネットアクセスのあるデバイスから認識APIにアクセスできるようにしたかったのです。 そのため、タスクを作成し、ステータス情報と結果をダウンロードするためのリンクを取得するためのいくつかのRESTfulリクエストの形式で作成しました。 必要に応じて、各処理要求を承認する必要があります。SSLを有効にして、トラフィックを暗号化できます。
典型的なサービスシナリオは次のようになります。 1つ以上のPOST要求を使用して画像を送信するクライアントプログラムは、サーバー上でタスクを生成します。 タスクが形成された後、処理設定を指定して、処理のために送信する必要があります。 設定は、実行される処理のタイプによって異なります。
たとえば、ドキュメント全体の単純な認識が行われる場合、ドキュメントの言語と結果を取得する形式を指定することができます(デフォルト)。 pdf、docx、txt、xml、およびその他のいくつかをサポートするようになりました。
バーコードを認識できます(エンジン自体が画像内のバーコードを検出し、そのタイプを判別します)。手書きのテキストを認識できます。これは通常、アンケートに記入します。 また、APIに名刺レコグナイザーを出力します。名刺画像をサーバーに送信すると、認識されたテキストと見つかったすべてのフィールド(名前、姓、住所など)を含むvCardを受け取ります。
各リクエストの後に、サーバーはxmlを発行します。xmlには、タスクに関するすべての情報(識別子、コスト、ステータス、処理終了までのおよその時間)が含まれます。
処理の準備ができたジョブはサーバーキューに配置され、そこから次の解放されたハンドラーがそれらを取得します。 クライアントプログラムは、特別な要求を通じてタスクのステータスの変化について学習します。
タスクが処理されると、サーバーの応答にリンクが表示され、結果をダウンロードできます。
概略的に、1つの写真を処理するためのコマンドのシーケンスを図に示します。
大きい
理想的な場合、必要な要求は3つだけです。最初の要求では、イメージがサーバーに送信され、処理のためにキューに入れられます。 2番目では、タスクの準備ができていることがわかり、ダウンロードへのリンクが取得されます。 3番目のリクエストで、結果がダウンロードされます。
サービスAPIをさらに拡張する予定です。 ユーザーが指定したURL、高度なジョブ設定などを通じて、ジョブステータスの変更に関する通知が表示されます。 APIの次のバージョンを設計するときに、ユースケースで製品に欠けている機能に関する情報を取得することも期待しています。
内部でのすべての仕組み
サービスはWindows Azureで実行されます。 非常に便利であることが判明しました。すべてが機能するハードウェアとオペレーティングシステムについて考える必要はなく、アプリケーションロジックに集中できます。
概略的に、ソリューションアーキテクチャは次のようになります。

サービスはいくつかの部分で構成されています。 ユーザーデータはBlobストレージに保存され、設定とタスクはデータベースに保存されます。 Webロールは、ユーザーアプリケーションおよびWebインターフェイスとの対話を担当し、作業ロールは実際の認識に関与します。
WebロールはRESTfulサービスAPIを実装します。 ユーザーを承認し、タスクを受け取り、画像をBLOBストレージに追加し、ジョブの説明をデータベースに配置して、回答を生成します。
複数のワーカーロールがジョブの処理を担当します。 次のタスクの識別子はデータベースから取得され、このタスクに関連するファイルはblobから取得されます。 すべてが処理された後、結果がblobに配置され、タスクが正常に処理されたことがデータベースに記録されます。
次に、ユーザーアプリケーションがそのタスクのステータスに再び関心を持つと、BLOBへの特別なリンクが生成され、それによって結果を取得できます。 このリンクの有効期間は限定されており、特別なチェックサムが設定されているため、タスクの識別子を知っていても、このリンクからのみ結果にアクセスできます。
処理されたジョブはしばらくの間サーバー上に存在し、その後削除されます。
クライアントとプラットフォーム
Cloud OCR SDK APIの場合、任意のプログラミング言語および任意のオペレーティングシステムでクライアントを記述します。
たとえば、純粋なLinuxが好きな人のために、bash + curlのスクリプトがあります。 完全なファイル処理サイクル-わずか10行のコード。 うまくいけば十分です:-)。
従来のソリューションの提案者には、.net、java、python、およびAndroidアプリケーションテンプレートのクライアント例があります。
すべてのソースコードはプロジェクトとしてgithubに投稿されます。 あなたの願いを聞きながら、徐々に改善していきたいと思っています。
ベータテスト
Habrのすべてのユーザーが、サービスのベータテストに参加することをお勧めします。 テストに参加したい場合は、アドレス
http://ocrsdk.comにアクセスしてください。 まず、ABBYY Cloud OCR SDKを使用するためのアプリケーションフォームを登録して記入する必要があります。 アンケートに回答したユーザーは、すぐに100ページまたは500個の小さなテキストを無料で認識できます。 しかし、何らかの理由でこれがあなたにとって十分ではない場合-私たちに書いて、別のものを追加してください:-)
サービスの使用を開始しやすくするため、一般的なプログラミング言語でいくつかの例を作成し、無料でテストできる画像のデータベースを選択しました。
さらに、ベータテスト中とその後の両方で、同じ画像を認識するために2回お金を取らないという原則を適用します。 すでに画像を一度認識している場合は、他の設定で無料で再認識できます。 これは、デバッガーの下で円を描くようにアプリケーションのロジックをデバッグする場合に特に便利です。 そのような使用は開発者が支払うべきではないと確信しています。 画像の一致をチェックするには、それらのチェックサムを確認しますが、残念ながら、同じドキュメントの異なる写真の一致をチェックすることはできません。
私たちはあなたのフィードバックと提案に非常に興味があります! このテキストのコメントまたは
http://ocrsdk.comの個人アカウントのテクニカルサポートアドレスにコメントを書いてください。
更新:アンケートと手紙では、ロシア語で書くことができます:-)。
ヴァシリー・パンフェロフ、
開発者製品部