Как напечатать текст на вкладке текста в камеру с помощью OCR? - PullRequest
0 голосов
/ 10 января 2020

Я строю OCR, используя флаттер. Он обнаруживает текст в реальном времени с помощью камеры и отмечает его с помощью CustomPainter. Нажмите здесь, чтобы посмотреть пример изображения

Я могу выделить текст с помощью маркера rectanglur. Но теперь я хочу напечатать конкретный текст или строку на обложке коробки. как я могу этого достичь? я использую этот пример

Пример

 Widget _buildResults() {
const Text noResultsText = Text('No results!');

if (_scanResults == null ||
    _camera == null ||
    !_camera.value.isInitialized) {
  return noResultsText;
}

CustomPainter painter;

final Size imageSize = Size(
  _camera.value.previewSize.height,
  _camera.value.previewSize.width,
);

painter = TextDetectorPainter(imageSize, _scanResults);

return CustomPaint(
  painter: painter,
);
} 


 class TextDetectorPainter extends CustomPainter {
 TextDetectorPainter(this.absoluteImageSize, this.visionText);

  final Size absoluteImageSize;
  final VisionText visionText;
  @override
  void paint(Canvas canvas, Size size) {
  final double scaleX = size.width / absoluteImageSize.width;
 final double scaleY = size.height / absoluteImageSize.height;

Rect scaleRect(TextContainer container) {
  return Rect.fromLTRB(
    container.boundingBox.left * scaleX,
    container.boundingBox.top * scaleY,
    container.boundingBox.right * scaleX,
    container.boundingBox.bottom * scaleY,
  );
}

final Paint paint = Paint()
  ..style = PaintingStyle.stroke
  ..strokeWidth = 1.0;

for (TextBlock block in visionText.blocks) {
  paint.color = Colors.black;
  canvas.drawRect(scaleRect(block), paint);
}
}

 @override
  bool shouldRepaint(TextDetectorPainter oldDelegate) {
  return oldDelegate.absoluteImageSize != absoluteImageSize ||
      oldDelegate.visionText != visionText;
}
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...