使用 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 儲存模擬器 (VS2019),會建立一個額外的 bin 目錄,而儲存模擬器會使用該目錄進行部署。 只有 DLL 檔案會被複製到這個目錄,因此需要其他檔案的軟體將無法執行,並可能拋出上述異常。
您可以透過將運行時目錄複製到儲存模擬器使用的單獨 bin 目錄中來解決此問題。 我們建議在本地運行時,將此操作作為建置後事件執行(有關說明,請參見下文)(因為重新編譯/建置會將 bin 目錄恢復到其原始狀態)。 部署到雲端時不會遇到此問題。
-問題:在本機執行 Azure 函數專案時,它會建立一個額外的 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僅複製目標位置較新或缺少的檔案。







