首页 文章

Unity3D - OCR号码识别

提问于
浏览
1

我们的初始用例要求在Unity3D中编写应用程序(仅在C#中编写并同时部署到iOS和Android),允许移动电话用户将他们的相机保持到杂志文章的 Headers ,使用OCR来阅读 Headers ,然后我们将在后端处理该 Headers 以获取相关故事 . 由于其快速的原生字符识别,Vuforia对于这个用例来说是最好的 .

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

尝试的变通办法:

  • Google Cloud Vision - 效果很好,但不是原生的,相机图像有时非常大,所以没有我们要求的那么快 . 甚至考虑使用OpenCV Unity资产来识别数字,然后发送多个小得多的API调用,但仍然不是本机和一个额外的步骤 .

  • 按照SO的指示使用.Net包装器来实现Tesseract - 可能会很好用,但是在构建并尝试将外部dll引入Unity后,我收到此错误 .Net Assembly Not Found (很可能是.Net版本的问题,dll是汇编) .

  • 在服务器上从源代码安装Tesseract,然后创建我们自己的API - 老实说不清楚为什么我们在Google的运行良好并且得到积极维护的情况下尝试这一点 .

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

1 回答

  • 1

    Vuforia本身并没有提供任何系统来检测数字,只是字母 . 为了解决这个问题,我遵循了下一个策略(仅适用于常见图像附近的数字):

    • 识别图像 .

    • 在识别目标图像后捕获屏幕截图(此屏幕截图必须包含数字) .

    • 将屏幕截图发送到OCR Web服务并获取响应 .

    • 从响应中提取数字 .

    • 使用这些数字来执行您需要的任何操作并显示AR信息 .

    这种方法解决了这个问题,但它并不像魅力那样有效 . 他们的成功取决于屏幕截图和OCR服务的质量 .

相关问题