패키지, 저장소 및 앱 카테고리 검색

GitHub 저장소boursorama/ocr_scan_text

ocr_scan_text

OCR Flutter

ocr_scan_text 프로젝트 이미지
스타
18
포크
16
최근 푸시(UTC)
2024. 5. 27.
프로젝트 상태
활성

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

Flutter OCR Scan Text

OCR Flutter v1.3.1

Flutter OCR Scan Text is a wrapper around the "Google ML kit Text Recognition" library. It helps to facilitate accurate text search and display of results from the camera. It also allows to manage text searches from an image or a pdf.

Features

Allows you to easily scan text from the camera, extract accurate results and display them to the user.

The results are returned by list of Block.

  • A Block contains: the global text of the block, a list of Lines and the position.
  • A Line contains: the global text of the line, a list of Elements and the position.
  • An Element contains: a word and the position.

Note: The library uses the Camera package, be sure to ask for permission.

Usage

Add package in pubspec.yaml :
dependencies:
ocr_scan_text: 1.3.1
To use the library, import :
import 'package:ocr_scan_text/ocr_scan_text.dart';
To display the text detection widget with camera:
 LiveScanWidget(ocrTextResult: (ocrTextResult) {}, scanModules: [ScanAllModule()],)

A LiveScanWidget needs a module list to start detection. Validated results will be returned to the "matchedResult" method.

Create a scan module :

In this example (see the /example folder), we consider all Elements to be results.

Create a scan module :

class ScanAllModule extends ScanModule

The constructor of a module:

  • label: A label (optional) that will be displayed to the user during rendering
  • color: A color (optional) that will be used for rendering
  • validateCountCorrelation: The number of times the same result must be found in the same place for it to be valid. (As the camera moves certain numbers / letters may be misinterpreted over several frames).
ScanAllModule() : super(label: 'All',color: Colors.redAccent.withOpacity(0.3), validateCountCorrelation: 1);

The purpose of a module is to search among the Blocks for a list of results (ScanResult) and to return it using the "matchedResult" method.

@override
Future<List<ScanResult>> matchedResult(List<TextBlock> textBlock, String text) async {
 List<ScanResult> list = [];
 for (var block in textBlock) {
  for (var line in block.lines) {
   for (var element in line.elements) {
    list.add(ScanResult(cleanedText: element.text, scannedElementList: [element]));
   }
  }
 }
 return list;
}
Start a module :
module.start();
Stop a module :
module.stop();

Scan file with Widget (Supported extension : png, jpg and pdf )

StaticScanWidget(ocrTextResult: (ocrTextResult) {}, scanModules: [ScanAllModule()], file: File("path/image.png"));

Scan file without Widget (Supported extension : png, jpg and pdf )

This method open gallery for pick a pics and start text analyze. ( /!\ verify permissions before )

OcrScanService([module]).startScanWithPhoto();

This method open file folder for pick a file and start text analyze. ( /!\ verify permissions before )

OcrScanService([module]).startScanWithOpenFile();

This method start text analyze

OcrScanService([module]).startScanProcess(File('path/image.png'));

Helper

You can use TextBlockHelper methods to help find results.

  • TextBlockHelper.extractTextElementsWithRegex : Find the list of elements that match with the regex

  • TextBlockHelper.nextTextElement : Find the next TextElement a right or left of TextElement

  • TextBlockHelper.combineRecreateTextLine : When texts are on the same line but distant, MLKit can create two different TextBlock. The "combineRecreateTextLine" method will create a TextLine, from a starting TextElement, taking into account the Elements of each TextBlock

  • TextBlockHelper.combineLeftTextElement : Return a List of TextElement with all TextElement to the left of startElement including startElement.

  • TextBlockHelper.combineRightTextElement : Return a List of TextElement with all TextElement to the right of startElement including startElement.

  • TextBlockHelper.combineBetweenTextElement : Return a List of TextElement between startElement and endElement

Boursorama GitHub avatar
GitHub 작성자

Boursorama ↗

언어DartRubyKotlinSwiftObjective-C

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 12 개

프로젝트에 맞는 저장소를 선택하려면?

사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.

  1. 이름, 작성자 또는 설명으로 검색하고 기술 주제로 범위를 좁힙니다.
  2. 스타, 포크, 최근 푸시를 함께 비교하세요. 스타는 관심의 지표이며 품질을 보장하지 않습니다.
  3. 사용하기 전에 GitHub에서 README, 라이선스, Issues를 확인하세요.

출처 및 관리

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗