Debugowanie funkcji Azure na maszynie lokalnej z IronOCR
Problemy podczas uruchamiania Azure lokalnie
Typowe wyjątki występujące przy tym problemie to:
- Błąd podczas wdrażania Tesseract dla IronOcr
- Nie udało się znaleźć 'libtesseract-5'
- Nie można zlokalizować 'libtesseract-5'
- Nie udało się zlokalizować Tesseract-5
- Błąd podczas lokalizowania pliku konfiguracyjnego wdrożenia w \bin\runtimes\win-x64\native\IronOcr.Native.deployment.json
- IronOcr: Brakuje pliku .traineddata dla 'EnglishBest', który powinien się znajdować w
Problem z zależnościami podczas uruchamiania Azure Functions lokalnie
Podczas uruchamiania Azure lokalnie, używając Azurite (VS2022) lub Emulatora Azure Storage (VS2019), tworzony jest dodatkowy katalog bin, który Emulator Storage używa do wdrażania. Do tego katalogu kopiowane są tylko pliki DLL, więc oprogramowanie, które wymaga dodatkowych plików, nie będzie działać i może rzucać powyższym wyjątkiem.
Można rozwiązać ten problem, kopiując katalog runetimes do oddzielnego katalogu bin używanego przez Emulator Storage. Zalecamy wykonanie tego jako zdarzenia po kompilacji (zobacz poniżej instrukcje), gdy uruchamiasz lokalnie (ponieważ ponowna kompilacja/zbudowanie przywróci katalog bin do pierwotnego stanu). Nie napotkasz tego problemu podczas wdrażania do chmury.
- Problem: Podczas lokalnego uruchamiania projektu funkcji Azure, tworzy on dodatkowy folder bin, z którego uruchamia funkcję. Jednakże nie kopiuje do wspomnianego folderu bin wszystkich niezbędnych plików.
- Przykład: Projekt w C:\code\azure-functions-test, który buduje do C:\code\azure-functions-test\bin\Debug\netcoreapp3.1
- Rozwiązanie: Sklonuj katalog C:\code\azure-functions-test\bin\Debug\netcoreapp3.1\runtimes aby także istniał w C:\code\azure-functions-test\bin\Debug\netcoreapp3.1\bin
- Nadpisz wszystkie istniejące pliki, jeśli zostaniesz poproszony o potwierdzenie

Kroki wydarzenia po kompilacji
- Kliknij prawym przyciskiem myszy projekt funkcji Azure, wybierz Właściwości.
- Przewiń w dół do sekcji Wydarzenia.
-
Wprowadź polecenie wydarzenia po kompilacji, które skopiuje wszystkie wymagane pliki do odpowiedniego katalogu:
XCOPY "$(TargetDir)runtimes" "$(TargetDir)bin\runtimes" /S /E /Y /I /R /DXCOPY "$(TargetDir)runtimes" "$(TargetDir)bin\runtimes" /S /E /Y /I /R /DSHELLWyjaśnienie:
XCOPYjest używane do kopiowania plików i drzew katalogów.$(TargetDir)runtimesjest katalogiem źródłowym, gdzie początkowo kompilowane są pliki uruchomieniowe.$(TargetDir)bin\runtimesjest katalogiem docelowym dla plików uruchomieniowych, gdy aplikacja działa lokalnie.- Opcje:
/Skopiuje katalogi i podkatalogi z wyjątkiem pustych./Ekopiuje wszystkie podkatalogi, w tym puste./Ytłumi potwierdzenie nadpisania istniejących plików./Ijeśli miejsce docelowe nie istnieje i kopiujemy więcej niż jeden plik, zakłada, że docelowy musi być katalogiem./Rnadpisuje pliki tylko do odczytu./Dkopiuje tylko pliki, które są nowsze lub których brakuje w miejscu docelowym.


