我们最初的用例要求在 Unity3D 中编写一个应用程序(只用 C# 编写并同时部署到 iOS 和 Android),允许手机用户将相机对准杂志文章的标题,使用 OCR阅读标题,然后我们将在后端处理该标题以获取相关故事。 Vuforia由于其快速的 native 字符识别,它无疑是此用例的最佳选择。
在对初始应用程序进行了一些演示后,出现了更多潜在用途。任何只需要识别 A-z 字符的用例在 Vuforia 中都很容易,但第二个它需要数字识别,我们不得不去别处寻找,因为 Vuforia 不支持数字识别(现在或在不久的将来的任何地方)。
尝试的解决方法:
- Google Cloud Vision - 效果很好,但不是原生的,而且相机图像有时非常大,所以速度没有我们需要的那么快。甚至考虑过使用 OpenCV Unity Assets 识别数字,然后发送多个更小的 API 调用,但仍然不是原生的,需要一个额外的步骤。
- 按照 SO 的说明进行操作为 Tesseract 使用 .Net 包装器 - 可能效果很好,但在构建并尝试将外部 dll 引入 Unity 后,我收到此错误
.Net Assembly Not Found
(很可能是版本问题.Net 中编译了 dll)。 - 在服务器上从源代码安装 Tesseract,然后创建我们自己的 API - 老实说,我们不清楚为什么在 Google 的工作如此出色并且得到积极维护的情况下我们尝试这样做。
有没有人在 Unity 中遇到过同样的问题并最终找到了好的解决方案?
最佳答案
Vuforia 本身不提供任何系统来检测数字,只提供字母。为了解决这个问题,我采用了下一个策略(仅针对接近普通图像的数字):
- 识别图像。
- 识别目标图像后立即截屏(此截屏必须包含数字)。
- 将屏幕截图发送到 OCR 网络服务并获得响应。
- 从响应中提取数字。
- 使用这些数字执行您需要的任何操作并显示 AR 信息。
这种方法解决了这个问题,但效果并不理想。他们的成功取决于屏幕截图的质量和 OCR 服务。
关于opencv - Unity3D——OCR数字识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40077320/