tensorflow - 如何打造专业的机器视觉OCR解决方案?

标签 tensorflow neural-network conv-neural-network

我们需要从 iPad 相机拍摄的销售收据照片中读取一些文本。这是一个类似于我们需要阅读的示例:

Receipts

这个问题有一些限制条件:

  1. 我们需要读取总是出现在文本标记之后的总金额(例如本例中的Grand Total)。
  2. 字体始终相同。
  3. 应用程序必须在没有网络连接的情况下离线工作。

这是我们迄今为止尝试过的:

  • Google Mobile Vision 文本提取就像变魔术一样。但文本提取仅适用于 Android。我们需要在 iOS 中构建解决方案。
  • Google 和 Microsoft 拥有基于云的机器视觉解决方案,这些解决方案也能非常准确地工作。但是我们的应用需要离线工作。
  • 使用 tesseract OCR。它表现得很差。毫无疑问,因为我们有照片而不是扫描的黑白图像。

我们现在正在考虑使用卷积神经网络创建自定义解决方案。我的问题是,我们如何构建一个模型来利用这两个约束来创建一个更简单但非常准确的解决方案?

  1. 总金额始终出现在文本标记之后。我们可以安全地忽略文本的其余部分。
  2. 文本始终为英文且字体相同。

这是我们到目前为止提出的通用管道。

  1. 拉直图像并将其缩放为标准尺寸。
  2. 使用 conv net 定位文本标记 (Grad Total) 应该相当容易。我们可以完全跳过图像的上半部分。

目前我们不确定还能做什么。任何提示、建议和帮助都会很棒。

附言。我意识到这是一个关于设计方法的问题,而不是一个特定的编程问题。如果这违反了 SO 准则,我深表歉意。

最佳答案

我建议您考虑 deeplearning4j.org 解决方案。您可以在功能强大的机器上训练他们的网络,然后保存网络状态并在 android 上使用它。 Here他们解释了如何在 java 的帮助下在 android 应用程序上使用他们的网络。

关于tensorflow - 如何打造专业的机器视觉OCR解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42006965/

相关文章:

python - 从 C++ 运行 python 脚本时内存泄漏

python - 尝试在 Tensorflow 中使用未初始化的值变量(使用了 sess.run(tf.global_variables_initializer()) !)

c++ - Swift 中的神经网络

python - ValueError : Variable rnn/basic_rnn_cell/kernel already exists, 不允许。您的意思是在 VarScope 中设置 reuse=True 或 reuse=tf.AUTO_REUSE 吗?

tensorflow - 与 tf.nn.conv2d_transpose 相比,为什么 tf.keras.layers.Conv2DTranspose 不需要 output_shape?

python - Tensorflow 自定义正则化术语将预测与真实值进行比较

deep-learning - 如何在 Pytorch 中添加 EfficieNet 预训练模型的最后一个分类层?

python - 安装Keras破坏了Conda虚拟环境(Windows 10)

python - 如何让我的 Spyder 代码在 GPU 而不是 Ubuntu 上的 cpu 上运行?

machine-learning - MNIST教程中是如何预处理MNIST数据集的?