我正在 Flutter 中开发名片项目。我的目标是以数字方式从手机图库中的照片或图像中提取数据,包括以下字段: {姓名、地址、职务1、职务2、城市、国家、公司号码、传真、手机号码等} 我在使用正则表达式和 .contains 处理数据时遇到了麻烦,因为有各种卡片设计,并且数据并不总是位于同一位置。我使用 ML Kit 的逐行文本识别来捕获数据并将其存储在列表中。然后,我创建了一个 CardVisitModel 来尝试根据收集的数据的特征将其解析为属性。
现在的挑战是如何控制这个数据解析过程。正如我之前提到的,名片有许多不同类型,并且字段可以位于名片上的任何位置。
我尝试了 regex / '.contains' 函数和 flutter google ml 数据提取套件。机器学习套件只能处理地址电话电子邮件,所以如果我使用它。我仍然无法映射姓名、城市等。 你有什么建议吗?
您好,您可以使用 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"]);
});
} ```