谷歌视觉ocr:竖横线条文本识别

Posted

技术标签:

【中文标题】谷歌视觉ocr:竖横线条文本识别【英文标题】:Google vision ocr : vertical and horizontal lines text recognition 【发布时间】:2018-01-09 08:13:32 【问题描述】:

我们正在使用 google vision ocr 从收据中收集文本。 在某些情况下,收据上有一些垂直书写的文字,例如增值税信息等。

问题是谷歌视觉仅有效地读取主要方向的文本(例如水平方向),并丢弃在垂直方向而不是水平方向写在同一张收据中的所有文本。 是否有设置参数来告诉谷歌视觉也获取垂直方向的文本?

我在网上放了一个示例,其中包含两个方向的文本图像。

https://drive.google.com/file/d/0B8kZz-q27lGGSUl5V3RjXzBLNnc/view?usp=sharing

从 g-vision 识别的文本: 水平文本行

我希望被识别的文字: 水平文本行 垂直文本行

【问题讨论】:

【参考方案1】:

我知道这是迟到的反应,也许将来有人会从中受益...... 您可以强制检测器通过在应用检测器之前进行框架旋转来仅识别垂直文本,如下所示: 在 CameraSource 的 setRotation() 方法中。写:

outputFrame = new Frame.Builder()
                        .setImageData(mPendingFrameData, 
                          mPreviewSize.getWidth(),
                                mPreviewSize.getHeight(), 
                         ImageFormat.NV21)
                        .setId(mPendingFrameId)
                        .setTimestampMillis(mPendingTimeMillis)
                        .setRotation(mRotation)
                        .build();
mRotation = 2; (for vertical text direction from bottom to top)
mRotation = 1; (for vertical text direction from top to bottom)

【讨论】:

CameraSource 没有 setRotation 方法。 这里旋转的是 Frame 对象而不是 CameraSource 对象。 你能提供一些背景信息吗? setRotation 来自哪个库? @farakh 也可以更新我们可以复制的代码,例如图像输入路径、读取、此方法和输出路径。我最喜欢 Python 和 Scala,如果我没记错的话,这似乎是 Java。【参考方案2】:

我认为这是 Google Vision API 的限制。我也搜索了如何做到这一点,并最终使用了this solution。但如果您像我一样只需要其中一个垂直或水平,您可以使用客户端旋转 (please see here on how to crop and rotate before upload)。

【讨论】:

以上是关于谷歌视觉ocr:竖横线条文本识别的主要内容,如果未能解决你的问题,请参考以下文章

限制谷歌视觉中的检测区域,文本识别

Azure 认知服务 - 计算机视觉 - OCR 不适用于手写

LabVIEW OCR 实现车牌识别

OCR场景文本识别:文字检测+文字识别

如何识别作为光学字符识别 (OCR) 输出的文本中的实体?

从图像中删除边框(线条)