上一篇
按键安卓百度文字识别
- 行业动态
- 2025-05-15
- 5
百度文字识别支持安卓系统,可通过应用内按键快捷调用OCR功能,实现图片文字智能提取与翻译
前提条件
在使用百度文字识别(OCR)功能前,需完成以下准备:
- 百度AI账号:注册并登录百度智能云,进入“文字识别”服务,创建应用获取
API Key
和Secret Key
(简称 AK/SK)。 - 安卓开发环境:安装 Android Studio,配置项目基础结构。
- 权限配置:在
AndroidManifest.xml
中添加网络权限:<uses-permission android:name="android.permission.INTERNET" />
实现步骤
注册并获取 AK/SK
- 登录百度智能云 → 控制台 → 文字识别 → 创建应用 → 记录
API Key
和Secret Key
。 - 注意:AK/SK 需保密,建议通过后端服务器中转调用 API,避免直接暴露在客户端。
配置安卓项目
- 添加网络依赖(推荐使用 OkHttp):
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
- 配置权限:确保已添加网络权限(见前提条件)。
设计界面与逻辑
- 界面布局:添加一个按钮(触发识别)和一个文本框(显示结果)。
<Button android:id="@+id/btn_ocr" text="文字识别" /> <TextView android:id="@+id/tv_result" />
- 核心逻辑:
- 用户点击按钮后,选择图片(本地或拍照)。
- 将图片转换为 Base64 编码。
- 调用百度 OCR API,发送图片数据并获取识别结果。
调用百度 OCR API
- API 地址:
https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic
- 请求参数:
| 参数名 | 值 |
|————–|——————————————————————–|
| access_token | 通过 AK/SK 生成的临时 token(有效期约 30 天) |
| image | Base64 编码的图片数据 |
关键代码示例(Kotlin)
生成 Access Token
fun getAccessToken(apiKey: String, secretKey: String): String { val url = "https://aip.baidubce.com/oauth/2.0/token" val params = mapOf( "grant_type" to "client_credentials", "client_id" to apiKey, "client_secret" to secretKey ) // 使用 OkHttp 发送 GET 请求并解析 token(省略具体实现) }
调用 OCR API
fun recognizeText(imageBase64: String, accessToken: String) { val url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic" val json = mapOf( "image" to imageBase64 ).toJson() // 需引入 Gson 库 val requestBody = RequestBody.create(MediaType.get("application/json"), json) OkHttpClient().newCall(Request.Builder() .url(url) .addHeader("Content-Type", "application/json") .addHeader("Authorization", "Bearer $accessToken") .post(requestBody) .build()).execute().use { response -> val result = response.body?.string() // 解析 JSON 并更新 UI(省略具体实现) } }
注意事项
问题 | 解决方案 |
---|---|
AK/SK 泄露风险 | 通过后端服务器中转 API 调用,客户端仅传递必要数据。 |
图片格式不兼容 | 确保图片为 JPG/PNG 格式,且大小不超过 4MB。 |
网络请求失败 | 添加超时重试机制,并检查设备网络状态。 |
免费额度限制 | 百度 OCR 新用户每月赠送一定免费调用量,超出需付费(具体以官方为准)。 |
相关问题与解答
问题1:百度OCR API的调用次数有限制吗?
解答:百度OCR提供免费额度(如通用文字识别每日5万次),超出后需付费,具体配额可在百度智能云控制台查看。
问题2:如果识别失败,如何排查原因?
解答:
- 检查网络:确保设备联网且无防火墙拦截。
- 验证AK/SK:确认
API Key
和Secret Key
正确,且未过期。 - 图片质量:确保图片清晰、无遮挡,且符合格式要求。
- 日志分析:查看API返回的错误码(如 `ERROR