[PAID] MlTBRek: Offline Text and Barcode recognition using ML Kit [$8 or 551]

By dmin

The MlTBRek extension for App Inventor 2 and Kodular enables offline text recognition and barcode scanning using ML Kit. This extension offers modules for barcode and text recognition, including support for various scripts such as Latin, Devanagari, Chinese, Japanese, and Korean. Users can initialize text and barcode recognizers, install and check the availability of necessary modules, and recognize text or barcodes from images, file paths, or content URIs. The extension also provides events for handling module states, recognition results, and errors, making it a powerful tool for integrating advanced recognition features into your apps.

1. Overview

  • Offline text and barcode recognition using Google ML Kit.

  • Support for multiple language scripts: Latin, Devanagari, Chinese, Japanese, and Korean.

  • Initialize text and barcode recognizers separately.

  • Install, check availability, and release ML modules as needed.

  • Recognize text or barcodes from Image components, file paths, or content URIs.

  • Live barcode scanner with camera preview support.

  • Detailed events for module states, recognition results (with structured data), and error handling.

  • Automatic parsing of QR Codes, Data Matrix, PDF-417, and Aztec values into structured formats (URL, contact, WiFi, geo, email, phone, SMS, calendar, driver license).

Latest Version: 5
Published: 2023-09-02T18:30:00Z
Last Updated: 2026-06-21T18:30:00Z
Aix size: 1.3 mb
Permissions: android.permission.CAMERA android.permission.READ_MEDIA_IMAGES

2. Blocks

MlModules

Text Recognizer

Barcode Recognizer


3. Documentation

BarcodeRecognizer

UrlScanned

Event raised if url was found in barcode
title : text
url : text

ContactInfoScanned

Event raised if contact info was found in barcode
address : text
email : text
name : text
orgName : text
phone : text
title : text
urls : text

EmailScanned

Event raised if email was found in barcode
address : text
body : text
subject : text
type : number

WifiScanned

Event raised if wifi info was found in barcode
ssid : text
pswd : text
encryptionType : number

GeoPointScanned

Event raised if geo points were found in barcode
lat : number
lon : number

PhoneScanned

Event raised if phone was found in barcode
number : text
type : number

SmsScanned

Event raised if sms was found in barcode
phoneNumber : text
message : text

CalendarEventScanned

Event raised if calendar event was found in barcode
summary : text
description : text
location : text
start : text
end : text

DriverLicenseScanned

Event raised if driver license was found in barcode
firstName : text
lastName : text
licenseNumber : text
birthDate : text
expiryDate : text

BarcodeScanned

Event raised when no specific type of barcode was found and given barcode was decoded in general
rawValue : text
barFormat : number
displayValue : text

BarRecognitionFailed

Event raised if barcode scanning failed
errorMsg : text

SetPreviewContainer

Sets the view to be used for camera preview.
component : component

StartScanner

Starts the live scanner using the view set by SetPreviewContainer.

StopScanner

Stops the live scanner.

BarRecognitionModules

Modules for barcode recognition

InitBarRecognizer

Initializes Barcode recognizer/scanner

CloseRecognizer

Method for CloseRecognizer

RecogniseBarcode

Tries to decode barcode from given input which can be an Image component, file path or content uri
image : any

MlModules

ModulesInstalled

Event raised when modules have been installed
type : number

ModulesInstallFailed

Event raised when modules installation failed
type : number
errorMsg : text

ModulesStateUpdated

Event raised when modules state changes
type : number
state : number
progress : number

GotModulesState

Event raised after checking modules availability
type : number
areModulesAvailable : boolean

IsPlayServicesAvailable

Returns whether Google Play Services is available on device or not

InstallModules

Install modules of given type
type : number

ReleaseModules

Initiates a request to release given modules when they are no longer needed. This method notifies Google Play services that the modules are no longer needed for this app, but it does not guarantee the modules can be removed. Google Play services will try to clean up the modules when they are not used by any apps.
type : number

CheckModulesAvailability

Checks given modules availability
type : number

TextRecognizer

RecognisedText

Event raised after getting text from image
text : text
blocks : list

TextRecognitionFailed

Event raised if text recognition failed
errorMsg : text

TextRecognitionModules

Modules for text recognition
langScript : number

InitTextRecognizer

Initialize Text Recognizer
langScript : number

CloseRecognizer

Closes the Text Recognizer and releases resources.

RecogniseText

Tries to recognize text from given input that can be an Image component, file path or content uri
image : any

DefaultScript

Default Latin Script
Accepts: number

DevanagariScript

Devanagari Script
Accepts: number

ChineseScript

Chinese Script
Accepts: number

JapaneseScript

Japanese Script
Accepts: number

KoreanScript

Korean Script
Accepts: number

4. Example Usage

Install required modules

Check modules availability

Text Recognisation
First initialize recognizer.

Then provide input image to RecogniseText block.

RecognisedText event will be raised with result if recognition was successful otherwise TextRecognitionFailed event will be raised with error message.

blocks is a list of dictionaries. Each dictionary contains following keys:
- text : complete text
- lines : a list of lines
- angles : a list of angles corresponding to each line
- confidences : a list of confidence values corresponding to each line

All major language scripts are supported.

  • Latin

  • Devanagari

  • Chinese

  • Japanese

  • Korean

Barcode Recognition

Initialize Barcode recogniser.

Then provide input image to RecogniseBarcode block.

Result will be delivered via different events based upon type of barcode.

It reads the following barcode formats:

It automatically parses QR Codes, Data Matrix, PDF-417, and Aztec values, for the following supported formats:

  • URL

  • Contact information (VCARD, etc.)

  • WiFi

  • Geo-location (latitude and longitude)

  • Email

  • Phone number

  • SMS

  • Calendar Event

  • Driver License

Live Scanner
Camera permission is required

4. Demo Video

5. Purchase Extension

6. Changelog

Version 2 — 2023-10-26

  • Rename extension to MlTBRek from SimpleRecognition

  • Some new blocks added and few blocks removed

  • Upgrade to ML Kit
    Brings dynamic deps management and thus effectively reducing aix size to just 1.1mb

  • Major internal changes wherever there was room for improvement
    Like support for Hindi and other Devanagari Script langs

  • Recognise blocks can accept Image component, File Path or Content Uri

  • Completely offline purchase verification

Version 3 — 2024-05-04

  • Aix size reduced to 1.1 mb

  • Extension won't crash Companion now
    Though none of its blocks will work.

  • No-conflict version to resolve deps conflict with my other ML Kit extensions like ImageLabelling and ScanKit

Version 4 — 2024-08-30

  • Extension has been completely re-written so create a backup of imp projects before importing new version

  • Added Chinese, Japanese and Korean language script supported to extension

  • Updated Text Recognition (19.0.1) and Bar Recognition (18.3.1) SDKs

  • Added license key property so no need to upload license to assets now

Version 4.1 — 2025-12-04

  • Online images can also be used now

Simply pass the image url.

image

Input:

image

Result:

image
Version 5 — 2026-06-22

  • Architectural Modularization Split the monolithic extension into three specialized components (BarcodeRecognizer, TextRecognizer, MlModules) to keep your projects clean and reduce overhead.

  • New Live Camera Scanner Added full support for continuous live barcode scanning through a camera preview (SetPreviewContainer, StartScanner, StopScanner blocks).

  • Added CloseRecognizer methods to give you explicit control over freeing up ML Kit resources.

Thank you.
Hope it helps!