首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黑莓的光学字符识别?

黑莓的光学字符识别?
EN

Stack Overflow用户
提问于 2012-08-14 13:29:45
回答 2查看 583关注 0票数 1

我正在黑莓的核心应用程序上工作,在其中我需要执行OCR任务。

到目前为止,我已经搜索并发现,几乎没有像ABBY这样的在线API,它允许读取图像并返回文本文件,但它们并不是免费的,经过几次跟踪之后,它们收取了一定的费用。

我可以用服务器实现在设备端执行光字符识别吗?请给我建议一下这个任务。

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

代码语言:javascript
复制
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的错误页面。http://cloud.ocrsdk.com/GenericError.htm?aspxerrorpath=/processImage/language=English&exportFormat=txt;connectionhandler=httpc

请建议我:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-20 07:06:50

我完成了OCR的任务。

我从Java中获得的代码是不完整的,或者可能无法从我的角度工作。我已经在PHP服务器上执行了OCR功能的实现。并成功地发挥了作用。

票数 0
EN

Stack Overflow用户

发布于 2012-08-15 08:35:22

如果我正确地理解了您的意思,您希望为BlackBerry设备实现自己的OCR应用程序,并且希望将图像发送到服务器,识别它并将文本文件发送回设备。

有一个开放源代码的OCR实现,请检查以下链接:http://en.openocr.org/

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

编辑

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11953358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档