黑莓中的光学字符识别?

时间:2012-08-14 13:29:45

标签: blackberry ocr

我正在开发黑莓中的核心应用程序,我需要执行OCR任务。

直到现在我已经搜索过并发现很少有像ABBY这样的在线API允许读取图像并返回文本文件,但是它们不是免费的,经过一些小道后他们会收取一定金额。

我可以完全通过服务器实现在设备端执行光学字符识别。 请建议我完成这项任务。

已编辑:我正在使用以下代码

public String serverUrl = "http://cloud.ocrsdk.com";
    static final String BOUNDARY = "----------V2ymHFg03ehbqgZCaKO6jy";


    public byte[] send() throws Exception
    {
        HttpConnection hc = null;

        InputStream is = null;

        ByteArrayOutputStream bos = new ByteArrayOutputStream();

        byte[] res = null;

        try
        {
            hc = (HttpConnection) Connector.open(serverUrl+"/processImage/"+"language=en&exportFormat=txt");

            hc.setRequestProperty("Content-Type", "multipart/image-JPG; boundary=" + BOUNDARY);
            /*hc = (HttpConnection) Connector.open(SERVICE_URL);
            hc.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
            hc.setRequestProperty(PARAM_IMAGE, "");
            hc.setRequestProperty(PARAM_LANGUAGE, lang);
            hc.setRequestProperty(PARAM_APIKEY, key);*/

            hc.setRequestMethod(HttpConnection.POST);

            OutputStream dout = hc.openOutputStream();

            dout.write(raw);

            dout.close();

            int ch;
            StringBuffer sb= new StringBuffer();
            is = hc.openInputStream();

            while ((ch = is.read()) != -1)
            {
                bos.write(ch);
                sb.append(ch);
            }
            System.out.println(sb);
            res = bos.toByteArray();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if(bos != null)
                    bos.close();

                if(is != null)
                    is.close();

                if(hc != null)
                    hc.close();
            }
            catch(Exception e2)
            {
                e2.printStackTrace();
            }
        }
        return res;
    }

但即使使用此代码也无效。在发出HTTP请求后,我得到200作为响应代码。 但没有像预期的那样得到完美的回应。作为回应,我得到了ABBYY的ERROR PAGE。 http://cloud.ocrsdk.com/GenericError.htm?aspxerrorpath=/processImage/language=English&exportFormat=txt;connectionhandler=httpc

请建议我:(

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您想为BlackBerry设备实施自己的OCR应用程序,并且想要将图像发送到服务器,请识别它并将文本文件发送回设备。

有一个开源OCR实现,请查看以下链接:http://en.openocr.org/

使用此信息实现OCR服务器功能。 BlackBerry客户端功能将是微不足道的。只需使用HTTPConnection类和流类来上传/下载文件到服务器或从服务器下载文件。

修改

注意到openocr.org没有直接的源代码下载。他们需要将电子邮件请求发送到cuneiform@cognitive.ru,他们会考虑。我认为这不是一种方便的方式。

让我们检查其他来源,例如Tesseract OCR。通过该链接,您可以下载源代码并构建OCR应用程序。然后为这个通过HTTP工作的应用程序实现server-wrapper,并编写通过HTTP将图像文件上传到该服务器的blackberry客户端,并获取结果文本文件。

答案 1 :(得分:0)

我完成了任务OCR。

我从GitHub for Java获得的代码不完整或者可能无法在我这边工作。 我已在PHP服务器上执行OCR功能。 它的成功运作。