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は宛先に存在しないか新しいファイルのみをコピーします。


