Flutter阿里云OCR识别插件aliyun_ocr_sdk的使用
Flutter阿里云OCR识别插件aliyun_ocr_sdk的使用
特性
本插件支持用户跳过生成签名的过程,通过上传网页上的图片URL来使用阿里云OCR文本识别API。
本插件支持阿里云OCR方法的新旧版本。旧版可以正常使用,而新版仅支持以URL格式上传图片,不支持二进制图像。
旧方法
目前旧方法可以正常工作。
新方法
注意:由于某些原因,我无法通过HTTP上传我的图片,返回错误码503。经过与阿里云工程师咨询后,他们建议调试其他框架SDK(如JAVA)以找到一些解决办法,并拒绝向我展示如何将图片二进制文件放入HTTP主体。
开始使用
本插件需要用户提供阿里云的accessKeyId
和accessKeySecret
。你需要登录阿里云网站并遵循以下步骤:
- 用户的图片
- 访问密钥管理
使用示例
/// 1. 老方法OCR
var aliYunSdkOld = aliYunOcrClientOld();
/// 1.1 输入你的AppCode
aliYunSdkOld.appCode = "YourappCode";
aliYunSdkOld.generateHeaders();
print(aliYunSdkOld.headers);
/// 1.2 输入图片URL
aliYunSdkOld.imgUrl = "https://img.alicdn.com/tfs/TB1Wo7eXAvoK1RjSZFDXXXY3pXa-2512-3509.jpg";
aliYunSdkOld.generateBodyWithImg();
/// 1.2 或者输入图片二进制数据
final value = File("bin/1.png");
var bytes = await value.readAsBytes();
aliYunSdkOld.imgBinary = bytes.buffer.asUint8List();
aliYunSdkOld.generateBodyWithImg();
// 1.3 使用post方法发送请求
var dio = Dio();
Response response;
try {
response = await dio.post(
aliYunSdkOld.baseUrl,
data: aliYunSdkOld.body,
options: Options(
headers: aliYunSdkOld.headers,
),
);
print(response.statusCode);
print(response.data);
} on DioError catch (e) {
final response = e.response;
if (response != null) {
print(response.data);
print(response.headers);
print(response.requestOptions);
} else {
/// 发送请求时发生错误
print(e.requestOptions);
print(e.message);
}
}
/// 2. 新方法OCR
var aliYunSdkNew = aliYunOcrClientNew();
/// 2.1 输入你的accessKeyId和accessKeySecret
aliYunSdkNew.accessKeyId = "YouraccessKeyId";
aliYunSdkNew.accessKeySecret = "YouraccessKeySecret";
/// 2.2 输入图片URL
aliYunSdkNew.imgUrl = "https://img.alicdn.com/tfs/TB1Wo7eXAvoK1RjSZFDXXXY3pXa-2512-3509.jpg";
aliYunSdkNew.queries['AccessKeyId'] = aliYunSdkNew.accessKeyId;
aliYunSdkNew.queries['Url'] = aliYunSdkNew.imgUrl;
/// 2.3 生成签名并更新查询参数
aliYunSdkNew.generateSignature(
accessKeySecret: aliYunSdkNew.accessKeySecret,
queries: aliYunSdkNew.queries,
method: "POST",
);
print(aliYunSdkNew.queries);
// 2.4 使用post方法发送请求
var dio1 = Dio();
Response response1;
try {
response1 = await dio1.post(
aliYunSdkNew.baseUrl,
queryParameters: aliYunSdkNew.queries,
);
print(response1.statusCode);
print(response1.data);
} on DioError catch (e) {
final response = e.response;
if (response != null) {
print(response.data);
print(response.headers);
print(response.requestOptions);
} else {
/// 发送请求时发生错误
print(e.requestOptions);
print(e.message);
}
}
其他信息
如有问题,请提交到我的主页。
该插件已发布在pub.dev
网站上,以下是链接:aliyun_ocr_sdk 1.0.0
示例代码
import 'dart:io';
import 'package:aliyun_ocr_sdk/aliyun_ocr_sdk.dart';
import 'package:aliyun_ocr_sdk/src/aliyun_ocr_sdk_base.dart';
import 'package:dio/dio.dart';
void main() async {
/// 1. 老方法OCR
var aliYunSdkOld = aliYunOcrClientOld();
/// 1.1 输入你的AppCode
aliYunSdkOld.appCode = "YourappCode";
aliYunSdkOld.generateHeaders();
print(aliYunSdkOld.headers);
/// 1.2 输入图片URL
aliYunSdkOld.imgUrl = "https://img.alicdn.com/tfs/TB1Wo7eXAvoK1RjSZFDXXXY3pXa-2512-3509.jpg";
aliYunSdkOld.generateBodyWithImg();
/// 1.2 或者输入图片二进制数据
final value = File("bin/1.png");
var bytes = await value.readAsBytes();
aliYunSdkOld.imgBinary = bytes.buffer.asUint8List();
aliYunSdkOld.generateBodyWithImg();
// 1.3 使用post方法发送请求
var dio = Dio();
Response response;
try {
response = await dio.post(
aliYunSdkOld.baseUrl,
data: aliYunSdkOld.body,
options: Options(
headers: aliYunSdkOld.headers,
),
);
print(response.statusCode);
print(response.data);
} on DioError catch (e) {
final response = e.response;
if (response != null) {
print(response.data);
print(response.headers);
print(response.requestOptions);
} else {
/// 发送请求时发生错误
print(e.requestOptions);
print(e.message);
}
}
/// 2. 新方法OCR
var aliYunSdkNew = aliYunOcrClientNew();
/// 2.1 输入你的accessKeyId和accessKeySecret
aliYunSdkNew.accessKeyId = "YouraccessKeyId";
aliYunSdkNew.accessKeySecret = "YouraccessKeySecret";
/// 2.2 输入图片URL
aliYunSdkNew.imgUrl = "https://img.alicdn.com/tfs/TB1Wo7eXAvoK1RjSZFDXXXY3pXa-2512-3509.jpg";
aliYunSdkNew.queries['AccessKeyId'] = aliYunSdkNew.accessKeyId;
aliYunSdkNew.queries['Url'] = aliYunSdkNew.imgUrl;
/// 2.3 生成签名并更新查询参数
aliYunSdkNew.generateSignature(
accessKeySecret: aliYunSdkNew.accessKeySecret,
queries: aliYunSdkNew.queries,
method: "POST",
);
print(aliYunSdkNew.queries);
// 2.4 使用post方法发送请求
var dio1 = Dio();
Response response1;
try {
response1 = await dio1.post(
aliYunSdkNew.baseUrl,
queryParameters: aliYunSdkNew.queries,
);
print(response1.statusCode);
print(response1.data);
} on DioError catch (e) {
final response = e.response;
if (response != null) {
print(response.data);
print(response.headers);
print(response.requestOptions);
} else {
/// 发送请求时发生错误
print(e.requestOptions);
print(e.message);
}
}
}
更多关于Flutter阿里云OCR识别插件aliyun_ocr_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter阿里云OCR识别插件aliyun_ocr_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
aliyun_ocr_sdk
是一个 Flutter 插件,用于集成阿里云的 OCR(光学字符识别)功能。通过这个插件,你可以在 Flutter 应用中轻松调用阿里云的 OCR 服务,实现身份证识别、银行卡识别、车牌识别等功能。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 aliyun_ocr_sdk
插件的依赖:
dependencies:
flutter:
sdk: flutter
aliyun_ocr_sdk: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 获取阿里云 OCR 的 AppKey 和 AppSecret
在使用阿里云 OCR 服务之前,你需要在阿里云控制台创建一个 OCR 应用,并获取 AppKey
和 AppSecret
。
3. 初始化 SDK
在你的 Flutter 应用中初始化 aliyun_ocr_sdk
:
import 'package:aliyun_ocr_sdk/aliyun_ocr_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
void initState() {
super.initState();
_initAliyunOCR();
}
Future<void> _initAliyunOCR() async {
await AliyunOCR.init(
appKey: 'your_app_key',
appSecret: 'your_app_secret',
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('阿里云 OCR 示例'),
),
body: Center(
child: ElevatedButton(
onPressed: _startOCR,
child: Text('开始 OCR 识别'),
),
),
);
}
Future<void> _startOCR() async {
try {
// 调用 OCR 识别功能
var result = await AliyunOCR.recognizeIDCard();
print('OCR 识别结果: $result');
} catch (e) {
print('OCR 识别失败: $e');
}
}
}
4. 调用 OCR 功能
aliyun_ocr_sdk
提供了多种 OCR 识别功能,例如:
- 身份证识别:
AliyunOCR.recognizeIDCard()
- 银行卡识别:
AliyunOCR.recognizeBankCard()
- 车牌识别:
AliyunOCR.recognizeLicensePlate()
你可以根据需求调用相应的函数。
5. 处理 OCR 结果
OCR 识别的结果通常是一个 Map
对象,包含了识别出的信息。你可以根据需要解析和处理这些信息。
Future<void> _startOCR() async {
try {
var result = await AliyunOCR.recognizeIDCard();
print('OCR 识别结果: $result');
// 解析身份证信息
var name = result['name'];
var idNumber = result['id_number'];
print('姓名: $name, 身份证号: $idNumber');
} catch (e) {
print('OCR 识别失败: $e');
}
}