Flutter定位服务插件accura_sdk的使用
Flutter定位服务插件Accura SDK的使用
Accura SDK简介
Accura SDK用于光学字符识别(Optical Character Recognition, OCR)和人脸匹配。它可以帮助用户验证身份并解锁真实身份。
以下是设置Accura SDK到项目的步骤:
1. 设置Android环境
添加权限到AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
在根目录build.gradle
中添加仓库
allprojects {
repositories {
google()
jcenter()
maven {
url 'https://jitpack.io'
credentials { username 'jp_ssguccab6c5ge2l4jitaj92ek2' }
}
}
}
配置app/build.gradle
packagingOptions {
pickFirst 'lib/arm64-v8a/libcrypto.so'
pickFirst 'lib/arm64-v8a/libssl.so'
pickFirst 'lib/armeabi-v7a/libcrypto.so'
pickFirst 'lib/armeabi-v7a/libssl.so'
pickFirst 'lib/x86/libcrypto.so'
pickFirst 'lib/x86/libssl.so'
pickFirst 'lib/x86_64/libcrypto.so'
pickFirst 'lib/x86_64/libssl.so'
}
2. 设置iOS环境
安装Git LFS并运行pod install
添加权限到Info.plist
<key>NSCameraUsageDescription</key>
<string>App usage camera for scan documents.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App usage photos for get document picture.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>App usage photos for save document picture.</string>
3. 将AccuraScan许可证添加到项目中
Android环境
- 在
app/src/main
目录下创建assets
文件夹。 - 将以下许可证文件放入
assets
文件夹:key.license
(用于Accura OCR)accuraface.license
(用于人脸匹配)
生成许可证地址:https://accurascan.com/developer/dashboard
iOS环境
将许可证文件放置在项目目录中,并将其添加到目标中。
4. 获取许可证配置
导入库并在代码中初始化SDK:
import 'package:accura_sdk/accura_sdk.dart';
Future<void> getMetaData() async {
try {
await AccuraSdk.setFaceBlurPercentage(80); // 设置人脸模糊阈值
await AccuraSdk.setHologramDetection(true); // 启用全息检测
await AccuraSdk.setLowLightTolerance(10); // 设置低光容忍度
await AccuraSdk.setMotionThreshold(25); // 设置运动阈值
await AccuraSdk.setMinGlarePercentage(6); // 设置最小眩光百分比
await AccuraSdk.setMaxGlarePercentage(99); // 设置最大眩光百分比
await AccuraSdk.setBlurPercentage(60); // 设置图像模糊阈值
await AccuraSdk.setCameraFacing(0); // 设置摄像头方向
await AccuraSdk.isCheckPhotoCopy(false); // 禁用照片复印检测
await AccuraSdk.SCAN_TITLE_OCR_FRONT("Scan Front side of "); // 设置OCR正面扫描提示
await AccuraSdk.SCAN_TITLE_OCR_BACK("Scan Back side of "); // 设置OCR背面扫描提示
await AccuraSdk.SCAN_TITLE_MRZ_PDF417_FRONT("Scan Front Side of Document"); // 设置MRZ正面扫描提示
await AccuraSdk.SCAN_TITLE_MRZ_PDF417_BACK("Scan Back Side of Document"); // 设置MRZ背面扫描提示
await AccuraSdk.getMetaData().then((value) =>
setupConfigData(json.decode(value))
);
} on PlatformException {}
if (!mounted) return;
}
成功响应:
{
"countries": [],
"barcodes": [],
"isValid": true,
"isOCREnable": true,
"isBarcodeEnable": true,
"isBankCardEnable": true,
"isMRZEnable": true
}
5. 扫描MRZ文档的方法
Future<void> startMRZ() async {
try {
var config = [
{"enableLogs": false},
"passport_mrz", // MRZ类型
"IND" // 国家代码
];
await AccuraSdk.startMRZ(config).then((value) => {
setState(() {
dynamic result = json.decode(value);
})
}).onError((error, stackTrace) => {});
} on PlatformException {}
}
成功响应:
{
"front_data": {},
"back_data": {},
"type": "Recognition Type",
"face": "URI?",
"front_img": "URI?",
"back_img": "URI?"
}
6. 扫描OCR文档的方法
Future<void> startOCR() async {
try {
var config = [
{"enableLogs": false},
1, // 国家ID
1, // 卡片ID
"Card Name",
1 // 卡片类型
];
await AccuraSdk.startOcrWithCard(config).then((value) => {
setState(() {
dynamic result = json.decode(value);
})
}).onError((error, stackTrace) => {});
} on PlatformException {}
}
7. 扫描条形码的方法
Future<void> startBarcode() async {
var config = {"type": "barcode_type"};
await AccuraSdk.startBarcode([config]).then((value) => {
setState(() {
dynamic result = json.decode(value);
})
});
}
8. 扫描银行卡的方法
Future<void> startBankCard() async {
try {
await AccuraSdk.startBankCard().then((value) => {
setState(() {
dynamic result = json.decode(value);
})
});
} on PlatformException {}
}
9. 获取人脸匹配百分比的方法
Future<void> startFaceMatch() async {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
try {
var accuraConfs = {
"face_uri": "uri_of_face"
};
await AccuraSdk.setFaceMatchFeedbackTextSize(18);
await AccuraSdk.setFaceMatchFeedBackframeMessage("Frame Your Face");
await AccuraSdk.setFaceMatchFeedBackAwayMessage("Move Phone Away");
await AccuraSdk.setFaceMatchFeedBackOpenEyesMessage("Keep Your Eyes Open");
await AccuraSdk.setFaceMatchFeedBackCloserMessage("Move Phone Closer");
await AccuraSdk.setFaceMatchFeedBackCenterMessage("Move Phone Center");
await AccuraSdk.startFaceMatch([accuraConfs]).then((value) => {
setState(() {
dynamic result = json.decode(value);
})
}).onError((error, stackTrace) => {});
} on PlatformException {}
}
成功响应:
{
"detect": "URI?",
"score": 0.98
}
10. 活体检测方法
Future<void> startLiveness() async {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
try {
var accuraConfs = {
"face_uri": "uri_of_face"
};
await AccuraSdk.setLivenessFeedbackTextSize(18);
await AccuraSdk.setLivenessFeedBackframeMessage("Frame Your Face");
await AccuraSdk.setLivenessFeedBackAwayMessage("Move Phone Away");
await AccuraSdk.setLivenessFeedBackOpenEyesMessage("Keep Your Eyes Open");
await AccuraSdk.setLivenessBlurPercentage(80);
await AccuraSdk.setLivenessGlarePercentage_0(-1);
await AccuraSdk.setLivenessGlarePercentage_1(-1);
await AccuraSdk.setLivenessFeedBackLowLightMessage("Low light detected");
await AccuraSdk.setLivenessURL("https://accurascan.com:8443");
await AccuraSdk.startLiveness([accuraConfs]).then((value) => {
setState(() {
dynamic result = json.decode(value);
})
}).onError((error, stackTrace) => {});
} on PlatformException {}
}
成功响应:
{
"detect": "URI?",
"Face_score": 0.98,
"score": 0.98
}
示例代码
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:accura_sdk/accura_sdk.dart';
void main() {
runApp(MaterialApp(
home: HomePage(),
debugShowCheckedModeBanner: false,
));
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
[@override](/user/override)
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Accura SDK Demo"),
backgroundColor: Colors.red[800],
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => FaceMatchPage()),
);
},
child: Text("人脸匹配"),
),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => OCRPage()),
);
},
child: Text("OCR 扫描"),
),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => MRZPage()),
);
},
child: Text("MRZ 扫描"),
),
],
),
),
);
}
}
更多关于Flutter定位服务插件accura_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter定位服务插件accura_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
accura_sdk
是一个用于 Flutter 的插件,主要用于身份证、护照、驾驶证等文档的扫描和识别。它提供了高精度的 OCR(光学字符识别)和 MRZ(机器可读区)识别功能。以下是如何在 Flutter 项目中使用 accura_sdk
的基本步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 accura_sdk
依赖:
dependencies:
flutter:
sdk: flutter
accura_sdk: ^2.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 SDK
在使用 accura_sdk
之前,需要先初始化 SDK。通常你会在应用的启动时进行初始化。
import 'package:accura_sdk/accura_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Accura SDK
await AccuraSdk.initialize();
runApp(MyApp());
}
3. 配置 License
accura_sdk
需要有效的 License 才能使用。你需要将 License 文件放在项目的 assets
目录下,并在 pubspec.yaml
中进行配置。
flutter:
assets:
- assets/accura_license.license
然后,在初始化 SDK 时加载 License 文件:
await AccuraSdk.setupLicense('assets/accura_license.license');
4. 使用 OCR 功能
accura_sdk
提供了 OCR 功能,可以用于识别身份证、护照等文档。以下是一个简单的示例:
import 'package:accura_sdk/accura_sdk.dart';
import 'package:flutter/material.dart';
class OcrPage extends StatefulWidget {
@override
_OcrPageState createState() => _OcrPageState();
}
class _OcrPageState extends State<OcrPage> {
String _ocrResult = '';
Future<void> _scanDocument() async {
try {
// 调用 OCR 识别功能
final result = await AccuraSdk.scanDocument();
setState(() {
_ocrResult = result;
});
} catch (e) {
setState(() {
_ocrResult = 'Error: $e';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('OCR Scan'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _scanDocument,
child: Text('Scan Document'),
),
SizedBox(height: 20),
Text('OCR Result: $_ocrResult'),
],
),
),
);
}
}
5. 使用 MRZ 功能
accura_sdk
还支持 MRZ(机器可读区)识别,通常用于护照和签证的识别。以下是一个简单的示例:
import 'package:accura_sdk/accura_sdk.dart';
import 'package:flutter/material.dart';
class MrzPage extends StatefulWidget {
@override
_MrzPageState createState() => _MrzPageState();
}
class _MrzPageState extends State<MrzPage> {
String _mrzResult = '';
Future<void> _scanMrz() async {
try {
// 调用 MRZ 识别功能
final result = await AccuraSdk.scanMrz();
setState(() {
_mrzResult = result;
});
} catch (e) {
setState(() {
_mrzResult = 'Error: $e';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('MRZ Scan'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _scanMrz,
child: Text('Scan MRZ'),
),
SizedBox(height: 20),
Text('MRZ Result: $_mrzResult'),
],
),
),
);
}
}
6. 处理扫描结果
accura_sdk
返回的扫描结果通常是 JSON 格式的字符串,你可以将其解析为 Dart 对象以便进一步处理。
import 'dart:convert';
Map<String, dynamic> resultMap = json.decode(_ocrResult);
print(resultMap['name']); // 例如:获取姓名
7. 错误处理
在使用 accura_sdk
时,可能会遇到各种错误,例如 License 无效、设备不支持等。建议在使用时进行适当的错误处理。
try {
final result = await AccuraSdk.scanDocument();
setState(() {
_ocrResult = result;
});
} catch (e) {
setState(() {
_ocrResult = 'Error: $e';
});
}
8. 权限处理
accura_sdk
可能需要访问摄像头和存储权限。确保在 AndroidManifest.xml
和 Info.plist
中配置了相应的权限。
Android:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
iOS:
<key>NSCameraUsageDescription</key>
<string>We need access to your camera to scan documents.</string>
9. 构建和运行
完成上述步骤后,你可以构建并运行你的 Flutter 应用程序,使用 accura_sdk
进行文档扫描和识别。
flutter run