Flutter文档扫描与识别插件veryfi_dart的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter 文档扫描与识别插件 veryfi_dart 的使用

Veryfi Logo Dart 2.16 code coverage License: MIT

Dart 模块用于与 Veryfi OCR API 进行通信。

安装

https://pub.dev/packages/veryfi_dart 安装。

开始使用

获取客户端 ID 和用户密钥

如果你还没有 Veryfi 账户,请前往 https://hub.veryfi.com/signup/api/ 注册。

Veryfi Dart 客户端库

veryfi 库可以用来与 Veryfi API 进行通信。所有可用功能的描述在这里:https://veryfi.github.io/veryfi-dart/

以下是一个使用 veryfi 进行 OCR 并从文档中提取数据的 Dart 代码示例:

导入包

import 'package:veryfi_dart/veryfi_dart.dart';

处理文件中的文档

Future<void> processDocument() async {
  // 文件名
  String fileName = 'receipt.jpg';
  // 创建一个文件对象
  File file = File(fileName);
  // 读取文件内容为字节数组
  Uint8List imageData = file.readAsBytesSync();
  // 将字节数组编码为 Base64 字符串
  String fileData = base64Encode(imageData);

  // 创建 VeryfiDart 客户端实例
  VeryfiDart client = VeryfiDart(
    'yourClientId', 
    'yourClientSecret', 
    'yourUsername', 
    'yourApiKey'
  );

  // 处理文档并打印结果
  await client.processDocument(fileName, fileData).then(
    (response) {
      print('success');
    },
  ).catchError((error) {
    print('error');
  });
}

更新文档

Future<void> updateDocument() async {
  // 创建 VeryfiDart 客户端实例
  VeryfiDart client = VeryfiDart(
    'yourClientId', 
    'yourClientSecret', 
    'yourUsername', 
    'yourApiKey'
  );
  
  // 更新文档参数
  final Map<String, dynamic> params = {'notes': 'Test'};

  // 更新文档并打印结果
  await client.updateDocument('123', params).then(
    (response) {
      print('success');
    },
  ).catchError((error) {
    print('error');
  });
}

更多关于Flutter文档扫描与识别插件veryfi_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文档扫描与识别插件veryfi_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用veryfi_dart插件来进行文档扫描与识别的示例代码。veryfi_dart是一个Flutter插件,用于集成Veryfi的文档扫描和识别服务。

首先,确保你已经在pubspec.yaml文件中添加了veryfi_dart依赖:

dependencies:
  flutter:
    sdk: flutter
  veryfi_dart: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤使用veryfi_dart插件:

  1. 初始化插件并设置API密钥

    main.dart或你的主入口文件中,初始化Veryfi实例并设置你的API密钥。你需要从Veryfi获取一个API密钥。

    import 'package:flutter/material.dart';
    import 'package:veryfi_dart/veryfi_dart.dart';
    
    void main() {
      // 初始化Veryfi实例并设置API密钥
      Veryfi.instance.apiKey = "你的API密钥";
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Veryfi Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(),
        );
      }
    }
    
  2. 创建一个文档扫描页面

    创建一个新的页面,用于上传和扫描文档。这里假设你有一个按钮来触发文档扫描功能。

    import 'package:flutter/material.dart';
    import 'dart:typed_data';
    import 'dart:ui' as ui;
    import 'package:veryfi_dart/veryfi_dart.dart';
    
    class MyHomePage extends StatefulWidget {
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      Uint8List? imageBytes;
      String? resultText;
    
      // 选择图片的函数
      Future<void> pickImage() async {
        final picker = ImagePicker();
        final pickedFile = await picker.pickImage(source: ImageSource.camera);
    
        if (pickedFile != null) {
          final File imageFile = File(pickedFile.path);
          final imageBytes = await imageFile.readAsBytes();
    
          // 调用Veryfi进行文档识别
          final result = await Veryfi.instance.scanDocument(imageBytes!);
          setState(() {
            resultText = result;
          });
        }
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Flutter Veryfi Demo'),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                ElevatedButton(
                  onPressed: pickImage,
                  child: Text('Scan Document'),
                ),
                if (resultText != null)
                  Text(
                    resultText!,
                    style: TextStyle(fontSize: 18),
                  ),
              ],
            ),
          ),
        );
      }
    }
    
  3. 运行应用

    确保你的设备或模拟器已经连接,并运行flutter run来启动应用。你应该能够看到一个按钮,点击按钮后,将打开相机并选择一张图片进行扫描和识别。识别结果将显示在屏幕上。

请注意,以上代码是一个基本的示例,实际使用中你可能需要处理更多的错误情况,并根据你的需求进行进一步的自定义。同时,确保你遵循Veryfi的API使用条款和限制。

回到顶部