OCR for android application tess4j

时间:2012-11-02 16:03:52

标签: android eclipse ocr tesseract

基本上我正在设计一个应用程序,它将从Android设备默认摄像头捕获图像,并将在图像视图中显示该图像!工作良好!够好了!

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);
       }  
    }

我的下一个任务是应用tess4j OCR功能,它将基本上从我捕获的图像中提取字符! tess4j基本上是tesseract OCR的java包装器! 我在ECLIPSE编程! 这是它的链接!

tess4j.sourceforge.net

我添加了我在开源文件中找到的所有罐子,并将它们添加到我制作的文件夹中,这是lib到eclipse中的主项目目录!我选择了所有这些并将它们添加到构建路径中!

然后我复制了所有我能找到的dll到主项目目录! 然后在上面的同一链接上使用一个示例,我编写了如下代码:

public void myfunction(Intent data)
    {
        Bitmap photo = (Bitmap) data.getExtras().get("data");
        Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping
        File imageFile = new File("myimage.tif");
        try 
        {   
            String result = instance.doOCR(imageFile)
            System.out.println(result);
        } 
        catch (TesseractException e)
        {
            System.err.println(e.getMessage());
        }
    }

我的项目正在拿起tesseract jar,并允许我浏览功能目录。运营商! 但是在线,

String result = instance.doOCR(imageFile)

我收到的错误是:

无法解析java.awt.image.BufferedImage类型。它是从所需的.class文件间接引用的

快速解决方法是: 配置构建路径!

我想弄清楚是什么问题!我正在努力找出问题所在!我错过了上面提到的步骤吗?我下载的tess4j还有其他文件!请帮助从上面的链接下载tess4j以检查下载中的文件!任何xml问题?或任何构建路径问题?

3 个答案:

答案 0 :(得分:4)

  

无法解析java.awt.image.BufferedImage类型。

从该错误消息来看,Android平台上似乎不支持BufferedImage类。 Android API不包含java.awt.image包。

答案 1 :(得分:3)

正如其他人所说,Android平台不支持;WITH q1 AS ( SELECT * FROM attributeBindings a WHERE a.fkAttributeId = 17 AND a.fkAttributeValueId = 97 ) ,q2 AS ( SELECT * FROM attributeBindings a WHERE a.fkAttributeId = 6 AND a.fkAttributeValueId = 11 ) SELECT q1.fkProductId FROM q1 INNER JOIN q2 ON q1.fkProductId = q2.fkProductId 。 解决方案是使用Tess-two,这是用于android的Tess4j等效Tesseract包装器api。

参考: OCR in android using tess-two

虽然这已经很老了,但是分享以便其他人可能觉得它很有用。

答案 2 :(得分:1)

我知道这个问题真的很老了。但要修复错误,请导航到属性> java build path>库和GT;添加库并包含JRE系统库。 :)