名片识别。如何在 Flutter 中使用 Google ML Kit 从名片中提取数据?

问题描述 投票:0回答:1

我正在 Flutter 中开发名片项目。我的目标是以数字方式从手机图库中的照片或图像中提取数据,包括以下字段: {姓名、地址、职务1、职务2、城市、国家、公司号码、传真、手机号码等} 我在使用正则表达式和 .contains 处理数据时遇到了麻烦,因为有各种卡片设计,并且数据并不总是位于同一位置。我使用 ML Kit 的逐行文本识别来捕获数据并将其存储在列表中。然后,我创建了一个 CardVisitModel 来尝试根据收集的数据的特征将其解析为属性。

现在的挑战是如何控制这个数据解析过程。正如我之前提到的,名片有许多不同类型,并且字段可以位于名片上的任何位置。

我尝试了 regex / '.contains' 函数和 flutter google ml 数据提取套件。机器学习套件只能处理地址电话电子邮件,所以如果我使用它。我仍然无法映射姓名、城市等。 你有什么建议吗?

flutter dart mobile dart-pub google-mlkit
1个回答
0
投票

您好,您可以使用 google_ml_kit 从图像中提取字符串中的数据,进一步您可以使用 Google Gemini Api 来识别电子邮件、公司名称、电话号码等数据

下面是代码示例:-

    final pickedFile = await picker.pickImage(source: ImageSource.camera);
    if (pickedFile != null) {
      readTextFromImage(image: File(pickedFile.path));
    }
  }

  Future<void> readTextFromImage({required File image}) async {
    final inputImage = InputImage.fromFile(image);
    final textRecognizer = TextRecognizer(script: TextRecognitionScript.latin);
    final RecognizedText recognizedText =
        await textRecognizer.processImage(inputImage);
    String text = recognizedText.text;
    var info = text.replaceAll('\n', ' ');

    log(info);
    callGemini(str: info);

    textRecognizer.close();
    setState(() {
      extractedData = text;
    });
  }

  callGemini({required String str}) {
    EasyLoading.show();
    gemini
        .generateFromText(
            "${str} Extract comany_name,person name,email,website,phone_number(only one),address(In single string) in json object")
        .then((value) {
      EasyLoading.showSuccess("Data Extracted Successfully");
      log("Data fetched");
      var filterData = value.text.replaceAll('`', "");
      log(filterData);
      var mapData = json.decode(filterData);
      log(mapData["company_name"]);
      log(mapData["person_name"]);
      log(mapData["email"]);
      log(mapData["website"]);
      log(mapData["phone_number"]);
      log(mapData["address"]);
    });
  } ```
© www.soinside.com 2019 - 2024. All rights reserved.