Java OCR数字识别(谷歌视觉)

Java OCR数字识别(谷歌视觉),java,android,android-studio,google-vision,android-applicationinfo,Java,Android,Android Studio,Google Vision,Android Applicationinfo,我必须创建一个数独解算器,所以我用google vision创建了一个数字识别,从网格中检索数字。这个数字识别修剪网格以分析每个单元格,但识别不起作用。。我认为问题来自文本识别器,它无法识别单个字符 你能帮我吗 谢谢 btnProcess.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { new

我必须创建一个数独解算器,所以我用google vision创建了一个数字识别,从网格中检索数字。这个数字识别修剪网格以分析每个单元格,但识别不起作用。。我认为问题来自文本识别器,它无法识别单个字符

你能帮我吗

谢谢

    btnProcess.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View v) {
            new Thread(new Runnable() {
                public void run() {
                    final StringBuilder stringBuilder = new StringBuilder();
                    TextRecognizer textRecognizer=new TextRecognizer.Builder(getApplicationContext()).build();
                    if(!textRecognizer.isOperational()){
                        Log.e("Error","Detector not available");
                    }
                    else {
                        int largeur = (bitmap.getWidth()) / 9;
                        int hauteur = (bitmap.getHeight()) / 9;
                        Bitmap cellule = null;
                        for (int y = 0; y< 9; y++) {
                            for (int x = 0; x < 9; x++) {
                                cellule = Bitmap.createBitmap(bitmap,x*largeur,y*hauteur,largeur,hauteur);
                                Frame frame = new Frame.Builder().setBitmap(cellule).build();
                                cellule.recycle();
                                SparseArray<TextBlock> items = textRecognizer.detect(frame);
                                if (items.size()==0){
                                    stringBuilder.append("0" + " ");
                                }
                                else{
                                    TextBlock item=items.valueAt(0);
                                    stringBuilder.append(item.getValue() + " ");
                                }

                            }
                            stringBuilder.append("\n");
                        }
                    }
                    runOnUiThread(new Runnable() {
                        public void run() {
                            txtResult.setText(stringBuilder.toString());
                        }
                    });
                }
            }).start();

        };
    });
btnProcess.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(最终视图v){
新线程(newrunnable()){
公开募捐{
最终StringBuilder StringBuilder=新StringBuilder();
TextRecognizer TextRecognizer=新的TextRecognizer.Builder(getApplicationContext()).build();
如果(!textRecognitor.isOperational()){
日志e(“错误”,“检测器不可用”);
}
否则{
int largeur=(bitmap.getWidth())/9;
int hauteur=(bitmap.getHeight())/9;
位图单元=空;
对于(int y=0;y<9;y++){
对于(int x=0;x<9;x++){
cellule=Bitmap.createBitmap(位图,x*largeur,y*hauteur,largeur,hauteur);
Frame Frame=new Frame.Builder().setbit映射(cellle.build();
细胞循环();
SparseArray项目=文本识别器。检测(帧);
如果(items.size()==0){
追加(“0”+”);
}
否则{
TextBlock item=items.valueAt(0);
stringBuilder.append(item.getValue()+);
}
}
stringBuilder.append(“\n”);
}
}
runOnUiThread(新的Runnable(){
公开募捐{
setText(stringBuilder.toString());
}
});
}
}).start();
};
});