引言
最近项目里要用到 OCR 拍照识别文本的能力。小编一开始想要的是接入百度的 OCR sdk,奈何领导直接说不批任何费用,看来只能另谋出路了。
于是,小编找到了这个库 google_mlkit_text_recognition,该库支持传入图片识别文本,最重要的还是免费。
闲话不多说,先来一张实现的效果图:
拍照支持局部识别,下面来说说实现步骤。
实现方式
为了实现拍照识别,分别依赖了下面三个库:
dependencies:
flutter:
sdk: flutter
camera: ^0.10.2+1
google_mlkit_commons: ^0.5.0
google_mlkit_text_recognition: ^0.9.0
通过 camera 库实现相机预览能力
CameraPreview(
cameraController,
)
并且相机开启预览后 cameraController 可以拿到每一帧的图片数据
cameraController.startImageStream(_processCameraImage);
将每一帧的图片数据,调用文本识别的google库,返回该图像内所有识别到的文本内容(注意:这里要自行做节流处理,我们不需要每帧都进行图像分析的开销)
Future _processCameraImage(CameraImage image) async {
final WriteBuffer allBytes = WriteBuffer();
for (final Plane plane in image.planes) {
allBytes.putUint8List(plane.bytes);
}
final bytes = allBytes.done().buffer.asUint8List();
final Size imageSize = Size(
image.width.toDouble(),
image.height.toDouble(),
);