1

这是我使用 tesseract 的 java 包装器 tess4j 将相机拍摄的图片转换为文本的代码!我已经包含了将它们添加到我的路径中的 jar 文件!代码没有显示任何语法错误!我启动默认相机,它启动我拍照,它显示在我声明的图像视图中,但是编辑框似乎是空的,尽管它应该显示 OCR 的结果!

package your.apnakaam.namespace;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.graphics.Bitmap;
import android.widget.ImageView;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.util.Log;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.io.File;
import java.io.File;
import net.sourceforge.tess4j.*;
public class KaamsekhaActivity extends Activity 
{
    private static final int CAMERA_REQUEST = 1888; 
        private ImageView imageView;
//**************************************************************************************************
private Intent data;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.main);
    setContentView(R.layout.apna_layout);
    Button capt_but = (Button)findViewById(R.id.capture_btn);
    this.imageView = (ImageView)this.findViewById(R.id.picture);

    capt_but.setOnClickListener(new View.OnClickListener()
    {
        //@Override
    // TODO Auto-generated method stub          
             public void onClick(View v)
             {
                 Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
                 startActivityForResult(cameraIntent, CAMERA_REQUEST); 
             }
    }); 
}
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {  
       if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) 
       {  
            Bitmap photo = (Bitmap) data.getExtras().get("data"); 
            imageView.setImageBitmap(photo);
            void myfunction()
       }  
    }
    public void myfunction()
    {
        TextView disp = (TextView)findViewById(R.id.editText1);
        File new_pic = (File) data.getExtras().get("data");
        Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping
        try 
        {   
            String result = instance.doOCR(new_pic);
            disp.setText(result);
        } 
        catch (TesseractException e)
        {
            System.err.println(e.getMessage());
        }
    }

}

我无法弄清楚代码有什么问题!

4

1 回答 1

1

函数 doOCR 采用在 android 中无法使用的缓冲图像!Bufferedimage 使用了在 java 中使用但在 android 中没有的 IIOimage!

于 2012-11-06T05:45:54.080 回答