IronOCR を使用してローカル マシンで Azure Functions をデバッグする
Azure をローカルで実行する際の問題
この問題が発生した場合によく見られる例外は次のとおりです。
- IronOcr 用の Tesseract のデプロイ中にエラーが発生しました
- 'libtesseract-5' が見つかりませんでした
- 'libtesseract-5' が見つかりません
- Tesseract-5を発見できませんでした
- \bin\runtimes\win-x64\native\IronOCR.Native.deployment.json でデプロイメント構成ファイルを見つける際にエラーが発生しました
- IronOcr: 'EnglishBest' の .traineddata ファイルが見つかりません。このファイルは、
ローカルでAzure Functionsを実行する際の依存関係の問題
Azureをローカルで実行する際、Azurite (VS2022) やAzure Storage Emulator (VS2019)を使用すると、Storage Emulatorがデプロイに使用する追加のbinディレクトリが作成されます。 このディレクトリにはDLLファイルのみがコピーされるため、追加のファイルを必要とするソフトウェアは動作しないか、上記の例外をスローする可能性があります。
Storage Emulatorが使用する個別のbinディレクトリにランタイムディレクトリをコピーすることで、この問題を解決できます。 ローカルで実行する場合は、ビルド後のイベントとしてこれを実行することをお勧めします (手順については以下を参照) (再コンパイル/ビルドにより、bin ディレクトリが元の状態に戻るため)。 クラウドへのデプロイ時にはこの問題は発生しません。
- 問題: Azure Functionプロジェクトをローカルで実行すると、関数を実行するための追加の_bin_フォルダーが作成されます。 しかし、必要なファイルすべてをその_bin_フォルダーにコピーしません。
- 例: C:\code\azure-functions-test にあるプロジェクトが C:\code\azure-functions-test\bin\Debug\netcoreapp3.1 にビルドされる
- 解決策: C:\code\azure-functions-test\bin\Debug\netcoreapp3.1\runtimes ディレクトリをコピーし、C:\code\azure-functions-test\bin\Debug\netcoreapp3.1\bin にも存在させる
- 既存のファイルがあれば上書きする

ビルド後のイベント手順
- Azure Functions プロジェクトを右クリックし、[プロパティ] を選択します。
- "イベント"セクションまで下にスクロールします。
必要なすべてのファイルを正しいディレクトリにコピーするビルド後イベント コマンドを入力します。
XCOPY "$(TargetDir)runtimes" "$(TargetDir)bin\runtimes" /S /E /Y /I /R /DXCOPY "$(TargetDir)runtimes" "$(TargetDir)bin\runtimes" /S /E /Y /I /R /DSHELL-説明:
XCOPYはファイルとディレクトリ ツリーをコピーするために使用されます。$(TargetDir)runtimes、ランタイム ファイルが最初にコンパイルされるソース ディレクトリです。$(TargetDir)bin\runtimesは、アプリケーションがローカルで実行されるときのランタイム ファイルの保存先ディレクトリです。- オプション:
/S空のディレクトリを除くディレクトリとサブディレクトリをコピーします。/E空のサブディレクトリも含め、すべてのサブディレクトリをコピーします。/Y既存のファイルを上書きするかどうかの確認を抑制します。/I、宛先が存在せず、複数のファイルをコピーする場合、宛先はディレクトリであると想定します。/Rは読み取り専用ファイルを上書きします。/D、コピー先でより新しいファイルまたはコピー先に存在しないファイルのみをコピーします。







