メインコンテンツへスキップ
このセクションでは、FRE 12 for Windows アプリケーションを Azure App Service にデプロイする方法について説明します。例として、Azure Storage アカウントのデータを使用する 2 つの WebJob プロジェクトを紹介します。ファイルの処理には Blob コンテナーを使用します。
このシナリオを使用すると、請求書や領収書などの小さな 1 ページ文書で最適な認識結果を得ることができます。
アプリケーションを App Service にデプロイするには、いくつかの手順があります。
  1. 前提条件に従って、ローカル マシンとアプリ インスタンスを準備する
  2. アプリケーションをデプロイする前に、準備手順を実行する
  3. App Service でアプリケーションをデプロイして実行する
以下の手順で示すコード サンプルを使用してください。

前提条件

ローカル マシン

App Service を作成する前に、以下の要件に従ってローカル マシンを準備してください。
  • Visual Studio 2019 および Azure 向けアプリケーション開発用モジュール (Visual Studio の Azure 機能を確認するか、Visual Studio Installer を使用してこれらのモジュールをダウンロードしてください)
  • Azure SDK (こちらからダウンロード)
  • .NET Framework 4.7.2
  • Azure Storage および Blob コンテナーを操作するための NuGet パッケージ:
    • Azure.Storage.Blobs (こちらからダウンロード)
    • Azure.Storage.Queues (こちらからダウンロード)
    • Newtonsoft.Json (こちらからダウンロード)
    • System.IO.Compression.ZipFile (こちらからダウンロード)
  • .NET Framework 4.7 用の ABBYY FineReader Engine ラッパー (開発者向けインストール後、C:\ProgramData\ABBYY\SDK\12\FineReader Engine\Inc.NET interops フォルダー内)
  • Blob コンテナーで動作するようにオーバーライドした IFileWriter インターフェイス (以下のサンプルを参照)
  • Azure Storage Explorer (任意。こちらからダウンロード)
  • ライセンス処理用に使用する Azure アカウント内の仮想マシン。以降の設定には、次の情報が必要です:
    • IP アドレス
    • 開放された接続ポート (既定またはユーザー定義) 。開放するにはファイアウォールを使用します
    • Sockets ネットワーク プロトコル接続の詳細

準備手順

準備作業はローカル マシンで行います。これらの手順を完了すると、アプリケーションのデプロイを開始するために必要な設定とファイルをすべて用意できます。
  1. ABBYY FineReader Engine ライブラリを含むアーカイブ (たとえば LibraryPackage.zip) を作成します。含めるファイルの一覧は FREngineDistribution.csv ファイルに記載されています。
    重要: ストレージ容量が限られている場合 (たとえば、容量が 1GB の App Service Plan を使用している場合) は、/extract オプションを使用して、最小サイズのカスタム ABBYY FineReader Engine パッケージを作成することをお勧めします。残りのストレージ容量はファイル処理に使用されます。
    アーカイブを作成する際は、ABBYY FineReader Engine のライセンス設定を仮想マシンの設定に合わせて構成する必要がある点に注意してください。
    • LicensingSettings.xml ファイルは Network 構成用に設定する必要があります (Working with the LicensingSettings.xml File を参照) 。
    • Sockets ネットワーク プロトコルを使用する必要があります。
    • オンライン ライセンスのトークン ファイルは Bin64 フォルダー内に配置する必要があります。
  2. Azure Storage アカウント (この記事では frestorage) を作成します。必要な手順は Azure の Web サイトにあります。
  3. 必要に応じて App Service を作成します (手順は こちら を参照) 。
  4. frestorage 内に 2 つの Blob コンテナーを作成します:
    • fre-lib - ABBYY FineReader Engine ファイル用
    • processing-container - 処理結果用
  5. 都合のよい方法 (.NET、Powershell、Python スクリプト、または Azure Storage Explorer/Azure Portal アプリケーション) で、LibraryPackage.zip を fre-lib コンテナーにアップロードします。
  6. Azure アカウントで、ライセンス設定を含む仮想マシンをデプロイして構成します:
    • LibraryPackage.zip 内の installLM.exe を使用して License Manager ユーティリティをインストールします。
    • LicensingSettings.xml で Sockets ネットワーク プロトコルを設定し、その後 Licensing Service を再起動します。
    • Azure App Service から Licensing Service の接続ポートにアクセスできることを確認します (仮想マシン上の Windows Firewall ルールを調整します) 。
    • ライセンスをアクティブ化します (ソフトウェア保護のみ。オンライン保護ではアクティベーションは不要です) 。
  7. frestorage 内に 2 つのキューを作成します:
    • processing-queue - ファイル処理タスクの設定用
    • status-queue - タスク完了通知用
  8. frestorage で使用する 2 つの Azure WebJob (.NET Framework) プロジェクトを Visual Studio 2019 で作成します:
    • FreDeployerJob - LibraryPackage.zip を App Service にデプロイするため (ファイル一覧: Config.cs、Functions.cs、Program.cs。詳細は 以下 を参照)
    • FreProcessorJob - 文書処理用 (ファイル一覧: Config.cs、Functions.cs、Program.cs、EngineLoader.cs、IFileWriter.cs、Processor.cs。詳細は 以下 を参照)

App Service での ABBYY FineReader Engine のデプロイと実行

ABBYY FineReader Engine をデプロイするには:
  1. Visual Studio を使用して FreDeployerJob を Azure App Service に発行します (WebJob の種類を Triggered に設定)。
  2. Azure ポータルで App Service を開きます。
  3. App Service の WebJobs を開きます。
  4. WebJobs の一覧で FreDeployerJob を探します。
  5. WebJobs タブで右クリックメニューから Run を実行して FreDeployerJob を起動します。
デプロイの結果を確認するには、Logs タブにアクセスできます。成功した場合、fre-lib コンテナーから LibraryPackage.zip がアップロードされ、App Service 内のすべてのエンティティから利用可能な %HOME_EXPANDED% フォルダー内にデプロイされます。 FreProcessorJob をデプロイするには、Visual Studio を使用して FreProcessorJob を Azure App Service に発行します (WebJob の種類を Continuous に設定)。その結果、FreProcessorJob は App Service の WebJobs の一覧に表示されます。 ファイルを処理するには:
  1. 処理対象のファイルを processing-コンテナーにアップロードします。
  2. 処理の新しいタスク用の JSON メッセージを、形式 {“blob-item-name” : “file_name”} で processing-queue に追加します。processing-コンテナーに Demo.tif をアップロードした場合、メッセージは次のようになります:
  1. タスクの完了を待ちます。新しいタスクが設定されるとすぐに、FreProcessorJob が指定されたファイルをメモリ内で処理し始めます。status-queue には、このタスクの実行に関するエントリが含まれます。
  2. processing-container 内で出力ファイルを見つけます。
  1. FreProcessorJob はシングルスレッドのプロセスとして動作します。ファイルを並列処理する予定がある場合、同じキューを監視する複数の FreProcessorJob を作成する必要があります。 2. 追加の各 FreProcessorJob は余分なメモリを消費します。Service Plan を購入する際は、この点を考慮してください。例えば、Azure Free Service Plan では、少量のメモリを消費し、ファイル処理の安定性を確保する単一の FreProcessorJob を持つのが理想的です。 3. 単一の FreProcessorJob を使用することは、大規模な多ページドキュメントの処理には適していません。この場合、App Service の代わりに Azure Cloud Service または Azure Virtual Machine でのドキュメント認識を検討してください。

コード サンプル

このセクションでは、App Service で ABBYY FineReader Engine API をデプロイおよび実装する際に使用するコード サンプルを紹介します。

FreDeployerJob:

FreProcessorJob: