opencv - Unity3D——OCR数字识别

标签 opencv unity3d ocr tesseract vuforia

我们最初的用例要求在 Unity3D 中编写一个应用程序(只用 C# 编写并同时部署到 iOS 和 Android),允许手机用户将相机对准杂志文章的标题,使用 OCR阅读标题,然后我们将在后端处理该标题以获取相关故事。 Vuforia由于其快速的 native 字符识别,它无疑是此用例的最佳选择。

在对初始应用程序进行了一些演示后,出现了更多潜在用途。任何只需要识别 A-z 字符的用例在 Vuforia 中都很容易,但第二个它需要数字识别,我们不得不去别处寻找,因为 Vuforia 不支持数字识别(现在或在不久的将来的任何地方)。

尝试的解决方法:

  1. Google Cloud Vision - 效果很好,但不是原生的,而且相机图像有时非常大,所以速度没有我们需要的那么快。甚至考虑过使用 OpenCV Unity Assets 识别数字,然后发送多个更小的 API 调用,但仍然不是原生的,需要一个额外的步骤。
  2. 按照 SO 的说明进行操作为 Tesseract 使用 .Net 包装器 - 可能效果很好,但在构建并尝试将外部 dll 引入 Unity 后,我收到此错误 .Net Assembly Not Found(很可能是版本问题.Net 中编译了 dll)。
  3. 在服务器上从源代码安装 Tesseract,然后创建我们自己的 API - 老实说,我们不清楚为什么在 Google 的工作如此出色并且得到积极维护的情况下我们尝试这样做。

有没有人在 Unity 中遇到过同样的问题并最终找到了好的解决方案?

最佳答案

Vuforia 本身不提供任何系统来检测数字,只提供字母。为了解决这个问题,我采用了下一个策略(仅针对接近普通图像的数字):

  1. 识别图像。
  2. 识别目标图像后立即截屏(此截屏必须包含数字)。
  3. 将屏幕截图发送到 OCR 网络服务并获得响应。
  4. 从响应中提取数字。
  5. 使用这些数字执行您需要的任何操作并显示 AR 信息。

这种方法解决了这个问题,但效果并不理想。他们的成功取决于屏幕截图的质量和 OCR 服务。

关于opencv - Unity3D——OCR数字识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40077320/

相关文章:

machine-learning - 使用神经网络进行 OCR

visual-c++ - OpenCV:如何在编写视频时为每个帧设置延迟时间

python - 在 python 中使用 cv2 读取 pgm 图像

c# - 访问 Unity 层的名称

java - Tess4j - Pdf 到 Tiff 到超正方 - "Warning: Invalid resolution 0 dpi. Using 70 instead."

java - 如何区分可搜索的 pdf 和不可搜索的 pdf?

python - 提取或裁剪热图像的冷或热区域

opencv - 从 OpenCv 图像比较中获取比较分数

unity3d - unity 不显示预览

c# - 处理对象之间的交互