Debugowanie Azure Functions 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: Brak 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 Azure Functions, 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:
XCOPYsluzy do kopiowania plikow i drzew katalogowych.$(TargetDir)runtimesto katalog zrodlowy, w ktorym poczatkowo kompilowane sa pliki wykonywalne.$(TargetDir)bin\runtimesto katalog docelowy dla plikow wykonywalnych uruchamianych lokalnie.- Opcje:
/Skopiuje katalogi i podkatalogi z wyjatkiem pustych./Ekopiuje wszystkie podkatalogi, wlaczajac puste./Ynie potwierdza nadpisania istniejacych plikow./Igdy katalog docelowy nie istnieje i kopiujesz wiecej niz jeden plik, zaklada, ze katalog docelowy musi byc katalogiem./Rnadpisuje pliki tylko do odczytu./Dkopiuje tylko pliki, ktore sa nowsze lub brakujace w katalogu docelowym.


