我正试图用谷歌的移动视觉API编写一个基本的ocr android应用程序,但我很难让该应用程序识别静态图像中的文本。我已经看过了codelabs教程,其他人的问题,也就是每一个带有android-vision标签的堆叠溢出问题,以及文档,但我仍然没有任何运气。我知道还有人问过类似的问题,但在那里贴出的答案不管用。
以下是我的代码摘录
Bitmap photo = (Bitmap) extras.get("data");
pictureOcrView.setImageBitmap(photo);
Context context = getApplicationContext();
TextRecognizer ocrFrame = new TextRecognizer.Builder(context).build();
Frame frame = new Frame.Builder().setBitmap(photo).build();
if (ocrFrame.isOperational()){
Log.e(TAG, "Textrecognizer is operational");
}
SparseArray<TextBlock> textBlocks = ocrFrame.detect(frame);
for (int i = 0; i < textBlocks.size(); i++) {
TextBlock textBlock = textBlocks.get(textBlocks.keyAt(i));
Log.e(TAG, "something is happening");
}我不明白这是什么问题。这不是说我收到了乱七八糟的短信,我只是没有收到任何短信。当我用用于codelab教程的文本图片测试这个应用程序时,我什么也没有得到。看起来textBlock数组甚至没有被创建,但是我不知道为什么。我知道我已经创建了框架,因为我仍然可以成功地运行其他框架方法,比如getHeight,并且isOperational()一直在返回true。
对我做错了什么有什么建议吗?
发布于 2017-01-29 11:26:20
我刚才也有同样的问题。问题是,您正在处理的图像不是整张照片,而是缩略图(通过调用extras.get(“data”)获得)。为了访问完整的映像,您需要保存它,然后使用它。有关如何做到这一点的详细信息,请参见以下链接:https://developer.android.com/training/camera/photobasics.html
发布于 2016-10-25 05:27:07
在我的案子里。当我从相机或画廊获得位图时,位图方向已经旋转。TextRecognizer无法检测文本,因为位图是旋转的。必须旋转位图以纠正方向。
可以通过使用this注释来旋转图像
https://stackoverflow.com/questions/40200074
复制相似问题