Flutter视频处理与OCR识别插件vidvocr_flutter_plugin的使用
Flutter视频处理与OCR识别插件vidvocr_flutter_plugin的使用
vidvocr_flutter_plugin
一个用于将VIDVOCR SDK的OCR功能集成到跨平台应用中的Flutter插件。支持iOS和Android,并提供统一的API以实现无缝的文字识别。该插件易于定制且优化了高性能。
示例代码
example/lib/main.dart
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter/services.dart';
import 'package:vidvocr_flutter_plugin/vidvocr_flutter_plugin.dart';
import 'package:pretty_http_logger/pretty_http_logger.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _ocrResult = 'No result yet last 7 ';
final _vidvocrFlutterPlugin = VidvocrFlutterPlugin();
// 示例凭据,替换为真实值
final String baseURL = 'https://www.valifystage.com';
final String bundleKey = 'ad44eb94ca6747beaf99eef02407221f';
final String userName = 'mobileusername';
final String password = '3B8uGe8bNTquN84';
final String clientID = 'aKM21T4hXpgHFsgNJNTKFpaq4fFpoQvuBsNWuZoQ';
final String clientSecret = 'r0tLrtxTue8c4kNmPVgaAFNGSeCWvL4oOZfBnVXoQe2Ffp5rscXXAAhX50BaZEll8ZRtr2BlgD3Nk6QLOPGtjbGXYoCBL9Fn7QCu5CsMlRKDbtwSnUAfKEG30cIv8tdW';
// 使用提供的凭据生成token的函数
Future<String?> getToken() async {
final String url = '$baseURL/api/o/token/';
HttpWithMiddleware httpWithMiddleware = HttpWithMiddleware.build(middlewares: [
HttpLogger(logLevel: LogLevel.BODY),
]);
final Map<String, String> headers = {
'Content-Type': 'application/x-www-form-urlencoded',
};
final String body =
'username=$userName&password=$password&client_id=$clientID&client_secret=$clientSecret&grant_type=password';
final http.Response response = await httpWithMiddleware.post(
Uri.parse(url),
headers: headers,
body: body,
);
if (response.statusCode == 200) {
final Map<String, dynamic> jsonResponse = json.decode(response.body);
return jsonResponse['access_token'];
} else {
print('Failed to retrieve token: ${response.statusCode}');
return null;
}
}
// 在生成token后启动SDK的函数
Future<void> startSDK() async {
String? token;
try {
token = await getToken();
if (token == null) {
setState(() {
_ocrResult = 'Failed to get token';
});
return;
}
} catch (e) {
setState(() {
_ocrResult = 'Error retrieving token: $e';
});
return;
}
final Map<String, dynamic> params = {
"base_url": baseURL,
"access_token": token,
"bundle_key": bundleKey,
"language": "en",
"document_verification": false,
"review_data": false,
"capture_only_mode": false,
"manual_capture_mode": true,
"preview_captured_image": true,
"primary_color": "#FF0000",
"enable_logging": true,
"collect_user_info": false, // 新参数
"advanced_confidence": false, // 新参数
"profession_analysis": false, // 新参数
"document_verification_plus": false // 新参数
};
try {
final String? result = await VidvocrFlutterPlugin.startOCR(params);
setState(() {
print(result);
_ocrResult = result ?? 'Failed to start OCR process.';
});
} on PlatformException catch (e) {
setState(() {
_ocrResult = 'Failed to start SDK: ${e.message}';
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('OCR插件示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: startSDK,
child: const Text('开始OCR'),
),
const SizedBox(height: 20),
Expanded(
child: SingleChildScrollView(
padding: const EdgeInsets.all(16.0),
child: Text(
'OCR结果: $_ocrResult\n',
textAlign: TextAlign.left, // 根据需要调整对齐方式
),
),
),
],
),
),
),
);
}
}
更多关于Flutter视频处理与OCR识别插件vidvocr_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter视频处理与OCR识别插件vidvocr_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用 vidvocr_flutter_plugin
进行视频处理和 OCR 识别的 Flutter 代码示例。请注意,假设你已经正确地在你的 Flutter 项目中添加了 vidvocr_flutter_plugin
依赖,并且已经完成了所有必要的配置。
首先,确保在你的 pubspec.yaml
文件中添加依赖:
dependencies:
flutter:
sdk: flutter
vidvocr_flutter_plugin: ^最新版本号 # 请替换为实际版本号
然后运行 flutter pub get
来获取依赖。
以下是一个基本的 Flutter 应用示例,展示了如何使用 vidvocr_flutter_plugin
进行视频处理和 OCR 识别:
import 'package:flutter/material.dart';
import 'package:vidvocr_flutter_plugin/vidvocr_flutter_plugin.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Video OCR Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final VidVocrFlutterPlugin _vidvocrPlugin = VidVocrFlutterPlugin();
String? ocrResult;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Video OCR Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
// 假设你有一个视频文件路径
String videoPath = "/path/to/your/video.mp4";
// 调用插件进行视频处理和OCR识别
try {
String result = await _vidvocrPlugin.processVideoAndRecognizeOCR(videoPath);
setState(() {
ocrResult = result;
});
} catch (e) {
print("Error processing video: $e");
}
},
child: Text('Process Video and Recognize OCR'),
),
if (ocrResult != null)
Text(
'OCR Result:\n$ocrResult',
style: TextStyle(fontSize: 18),
textAlign: TextAlign.center,
),
],
),
),
);
}
}
在这个示例中,我们创建了一个简单的 Flutter 应用,它包含一个按钮和一个用于显示 OCR 结果的文本区域。当用户点击按钮时,应用会调用 vidvocr_flutter_plugin
的 processVideoAndRecognizeOCR
方法来处理指定的视频文件,并显示 OCR 识别结果。
请注意,processVideoAndRecognizeOCR
方法的具体实现和参数可能会根据 vidvocr_flutter_plugin
的版本有所不同。因此,请参考插件的官方文档以获取最新的使用说明和 API 参考。
此外,由于视频处理和 OCR 识别是资源密集型任务,因此在实际应用中,你可能需要考虑将这些任务放在后台线程或隔离的 Dart 异步任务中执行,以避免阻塞主线程并影响应用的响应性。