帮助与文档 > 产品文档 > 文字识别OCR > Android_SDK文档 > 通用OCR服务
通用OCR服务

通用OCR Android SDK 简介

(1) 概念解释

文字识别OCR:将自然场景下图片上的文字内容,通过定位和检测,智能识别为可编辑的文本信息

(2) 说明

Hi,您好,欢迎使用有道智云文字识别OCR Android SDK。

本文档主要针对需要集成文字识别OCR Android SDK 的开发工程师,详细描述有道智云OCR能力及集成过程。

如果您想快速体验服务,建议您前往 文字识别体验中心 或者在体验中心右下侧找到小程序二维码,扫描进行体验。

如果您有与我们商务合作的需求,可以通过以下方式联系我们:

商务邮箱: AIcloud_Business@corp.youdao.com

如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

客服QQ:1906538062

智云翻译技术交流QQ 1群: 652880659(已满)

智云翻译技术交流QQ 2群: 669384425(已满)

智云翻译技术交流QQ 3群: 807539209

智云翻译技术交流QQ 4群: 936752411

智云OCR技术交流QQ 1群: 654064748(已满)

智云OCR技术交流QQ 2群: 471638046

智云语音技术交流QQ群:861723255

联系邮箱: zhiyun@corp.youdao.com

温馨提示:
本文档主要针对开发人员,接入测试前需要在后台创建API应用,并绑定实例;如果您还没有,请按照 新手指南 操作。
平台向每个账户赠送50元的体验金,供用户集成前测试所用,具体资费规则详见 通用OCR服务报价

功能介绍

文字识别OCR SDK是有道在线 OCR 接口服务进行封装,支持在线文本识别。提供快速的接入方式;同时提供数据统计能力,方便了解用户使用情况。

兼容性

支持设备:运行了 Android 4.0.3以及以上系统的 Android 设备

文字识别OCR Android SDK集成指南

集成前提

开始集成SDK之前开发者需要登录 有道智云平台,创建应用获取应用ID(或者通过运营人员获取应用ID),以便使用文字识别OCR服务。

集成步骤

(1) SDK包导入

请在工程文件根目录下创建一个名为 libs 的子目录(有的话则不需要创建),并将YoudaoBase.jar,so包和YoudaoTranslateOnline.jar拷贝到 libs 目录下,并将以下代码添加到app的build.gradle中:

android {
    sourceSets.main.jniLibs.srcDirs = ['libs']
    ...
}
    
dependencies {
    compile files('libs/YoudaoBase_v2.0.0.jar')
    compile files('libs/YoudaoOCROnline_v2.0.0.jar')
}

其中YoudaoBase_v2.0.0.jarYoudaoOCROnline_v2.0.0.jar地址

(2) AndroidManifest配置

<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取WiFi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取网络信息状态,如当前的网络连接是否有效 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- 读取手机状态 phone group -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<!-- 往SDCard读写数据权限   storage group -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

(3) 代码混淆配置

代码混淆文件proguard-project.txt,添加如下内容:

-ignorewarnings
-libraryjars libs/YoudaoBase_v2.0.0.jar
-libraryjars libs/YoudaoOCROnline_v2.0.0.jar
-keep class com.youdao.sdk.ydtranslate.** { ;} -keep class com.youdao.ocr.online.* { *;}

(4) SDK初始化

使用图片翻译SDK,请在程序的Application中调用SDK初始化代码,可以参考demo中DemoApplication。
注:appkey即应用ID。

//appkey即应用ID
YouDaoApplication.init(this, appkey);

功能集成

说明:请参考 demo 中 OcrDemoActivity 的使用

(1) 参数说明

type:识别类型,目前仅支持10012,表示按行识别

lanType:支持"zh-en"和"en",其中"zh-en"为中英识别,"en"参数表示只识别英文。若为纯英文识别,"zh-en"的识别效果不如"en",请妥善选择

source:设置为app对应的名称(英文字符串)

timeout:表示超时时间

注意:输入图片数据需要转换为Base64编码。

(2) 构造OCR识别参数对象

//OCR识别
OCRParameters tps = new OCRParameters.Builder()
                              .source("youdaoocr")
                              .timeout(100000)
                              .langType("zh-en")
                              .build();

(3) 设置回调和开始识别

通过ImageOCRecognizer,设置上一步构造的参数对象,调用recognize方法传入图片base64编码的数据和回调接口开始查询

识别回调接口包含两个方法:onResult表示识别成功,相关结果存储在result参数中,onError表示失败,失败信息放在OcrErrorCode中。可参见 错误代码列表

注意:整个识别是异步的,回调在子线程进行,若涉及到界面操作,请切回主线程。

//OCR识别
ImageOCRecognizer.getInstance(tps).recognize(base64,
                              new OCRListener() {

                                  @Override
                                  public void onResult(OCRResult result,
                                          String input) {
                                      //识别成功
                                  }

                                  @Override
                                  public void onError(OcrErrorCode error) {
                                      //识别失败
                                  }
                              });

文字识别OCR结果说明

对于中英在线 OCR,查询结果比较详细,服务器返回数据如下所示:

{
   "errorCode": "0",
   "Result": {
       "orientation": "Up",//方向
       "regions": [
           {
               "boundingBox": "28,257,4086,150",
               "lines": [
                   {
                       "boundingBox": "31,257,4083,73",
                       "words": [
                           {
                               "boundingBox": "354,257,347,50",
                               "text": "translation"
                           }
                       ]
                   },
       ],
       "textAngle": 0,//偏移量
       "language": "en"
   }

服务器是按照区域,行,字的格式返回的,即,一张图片,会识别出图片对应的 OCRResult,其上可能有多个有效区域 Region ,每个区域会包含一行或几行 Line ,每个行又包含一个或多个字 Word ,每个区域和行或者字符,都通过 boundingBox 字段返回坐