使用 IronOCR 在本地计算机上调试 Azure Functions

This article was translated from English: Does it need improvement?
Translated
View the article in English

本地运行 Azure 时出现问题

遇到此问题时常见的例外情况包括:

部署 IronOcr 的 Tesseract 时出错

  • 无法找到"libtesseract-5"
  • 无法找到"libtesseract-5"
  • 未能找到 Tesseract-5
  • 在 \bin\runtimes\win-x64\native\IronOCR.Native.deployment.json 处查找部署配置文件时出错
  • IronOcr:缺少"EnglishBest"的 .traineddata 文件,该文件应位于:

本地运行 Azure Functions 时的依赖问题

在本地使用 Azurite (VS2022) 或 Azure Storage Emulator (VS2019) 运行 Azure 时,会创建一个额外的 bin 目录,存储模拟器用于部署。 只有 DLL 文件被复制到此目录,因此需要额外文件的软件将无法运行,并可能抛出上述异常。

您可以通过将 runtimes 目录复制到存储模拟器使用的单独 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
  • 如果提示,覆盖任何现有文件

File V9pZPFGwDl related to 本地运行 Azure Functions 时的依赖问题

构建后事件步骤

  1. 右键单击 Azure Functions 项目,选择"属性"。
  2. 向下滚动到"活动"部分。
  3. 输入一个构建后事件命令,该命令会将所有必需的文件复制到正确的目录:

    XCOPY "$(TargetDir)runtimes" "$(TargetDir)bin\runtimes" /S /E /Y /I /R /D
    XCOPY "$(TargetDir)runtimes" "$(TargetDir)bin\runtimes" /S /E /Y /I /R /D
    SHELL

    -解释:

    • XCOPY用于复制文件和目录树。
    • $(TargetDir)runtimes是运行时文件最初编译的源目录。
    • $(TargetDir)bin\runtimes是应用程序在本地运行时运行时文件的目标目录。
    • 选项:
      • /S复制目录和子目录,但不包括空目录和子目录。
      • /E复制所有子目录,包括空子目录。
      • /Y表示不确认是否覆盖现有文件。 /I如果目标位置不存在且要复制多个文件,则假定目标位置必须是一个目录。
      • /R会覆盖只读文件。
      • /D仅复制目标位置较新或缺失的文件。

File R3HdEFPHAL related to 构建后事件步骤

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布