安卓开发文字识别百度
- 行业动态
- 2025-04-21
- 2
前期准备
百度AI开放平台注册与创建应用
- 注册账号:访问百度AI开放平台完成开发者注册。
- 创建应用:在控制台选择“文字识别”服务,新建应用并获取
API Key
和Secret Key
。 - 开通服务:根据需求选择通用文字识别(含位置版)、手写文字识别等具体服务。
安卓项目环境配置
配置项 | 说明 |
---|---|
minSdkVersion | 建议≥21(Android 5.0),兼容百度SDK最低版本要求 |
依赖库 | com.baidu.aip:sdk:最新版本号 (需在Maven仓库查询当前版本) |
网络权限 | 需在AndroidManifest.xml 中添加INTERNET 和ACCESS_NETWORK_STATE 权限 |
SDK集成步骤
添加Maven依赖
dependencies { implementation 'com.baidu.aip:sdk:5.4.2' // 以实际最新版本为准 }
配置安全密钥
- 将
API Key
和Secret Key
组合生成accessToken
:String clientId = "你的API Key"; String secretKey = "你的Secret Key"; OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(“https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=” + clientId + “&client_secret=” + secretKey)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// 处理网络错误
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String tokenJson = response.body().string();
JSONObject json = new JSONObject(tokenJson);
String accessToken = json.getString("access_token");
// 保存token用于后续接口调用
}
# 3. 调用文字识别接口
```java
// 示例:通用文字识别(高精度版)
String imagePath = "/sdcard/test.jpg"; // 图片路径
String requestUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";
MultipartBody body = new MultipartBody.Builder()
.addFormDataPart("image", "test.jpg", RequestBody.create(MediaType.parse("image/jpeg"), new File(imagePath)))
.addFormDataPart("access_token", accessToken)
.build();
Request request = new Request.Builder()
.url(requestUrl)
.post(body)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// 处理网络错误
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String result = response.body().string();
// 解析JSON数据(例如使用Gson库)
}
});
核心功能实现要点
功能模块 | 关键技术点 |
---|---|
图片预处理 | 使用BitmapFactory压缩图片尺寸,保持宽高比≤4096像素 |
多线程管理 | 在子线程执行网络请求,主线程更新UI(建议使用LiveData或RxJava) |
错误处理 | 处理HTTP状态码(如401 token过期)、JSON解析异常、网络超时等情况 |
权限动态申请 | Android 6.0+需动态申请存储权限(READ_EXTERNAL_STORAGE) |
常见问题与解决方案
问题现象 | 解决方案 |
---|---|
“401 Unauthorized”错误 | 检查accessToken有效期(默认2个月),重新获取token |
识别结果为空 | 确保图片清晰度≥72dpi,文字区域无严重倾斜或遮挡 |
网络请求超时 | 启用OkHttp超时配置,设置readTimeout 和writeTimeout 为10秒 |
相关问题与解答
Q1:如何提升复杂背景图片的识别准确率?
A:
- 预处理阶段:使用OpenCV进行灰度化、二值化、降噪处理
- 调用百度API时启用
detect_direction
参数(支持方向矫正) - 对结果进行后处理,过滤置信度<80%的识别结果
Q2:百度文字识别服务是否支持离线使用?
A:
百度OCR服务为云端API,需网络连接,若需离线能力,可考虑:
- 集成Firebase ML Kit本地模型(支持60+语言)
- 使用Tesseract OCR引擎(需自行训练数据包)
- 结合百度离在线融合方案(需单独申请企业版服务)