在Flutter中使用google_mlkit_text_recognition遇变量错误求助
解决google_mlkit_text_recognition的文本提取错误
针对你遇到的两个错误,直接给出解决方案:
错误1:TextBlock无rect属性
google_mlkit_text_recognition库中,TextBlock的边界矩形属性名为boundingBox而非rect,直接替换即可。
错误2:List<Point>无法赋值给List
block.cornerPoints返回的是List<Point<int>>类型,需要将每个Point<int>转换为Offset,可以通过map方法遍历转换后再转为列表。
修正后的完整代码
final inputImage = InputImage.fromFilePath(path!.path); final textRecognizer = TextRecognizer(script: TextRecognitionScript.latin); final RecognizedText recognizedText = await textRecognizer.processImage(inputImage); String text = recognizedText.text; for (TextBlock block in recognizedText.blocks) { // 替换rect为boundingBox final Rect rect = block.boundingBox; // 将List<Point<int>>转换为List<Offset> final List<Offset> cornerPoints = block.cornerPoints .map((point) => Offset(point.x.toDouble(), point.y.toDouble())) .toList(); final String blockText = block.text; final List<String> languages = block.recognizedLanguages; for (TextLine line in block.lines) { // 同样替换rect为boundingBox,转换cornerPoints类型 final Rect lineRect = line.boundingBox; final List<Offset> lineCornerPoints = line.cornerPoints .map((point) => Offset(point.x.toDouble(), point.y.toDouble())) .toList(); final String lineText = line.text; for (TextElement element in line.elements) { final Rect elementRect = element.boundingBox; final List<Offset> elementCornerPoints = element.cornerPoints .map((point) => Offset(point.x.toDouble(), point.y.toDouble())) .toList(); final String elementText = element.text; } } } // 记得使用完后释放识别器资源 await textRecognizer.close();
额外提示:使用完TextRecognizer后调用close()方法释放资源,避免内存泄漏。
内容的提问来源于stack exchange,提问作者mohammed aref saeed alsrkal
相关产品推荐
相关产品推荐

