Skip to main content

! OCR text from image (:ocr_text)

Declaration

text, details = img:ocr_text([ engine_options, binarization ])

Parameters

  • engine_options
    Optional, table. Choose language and OCR engine

    Structure
    {
    -- engine = "apple" uses Vision.framework (iOS 13+)
    -- Use image.vision_supported_recognition_languages() to list supported models
    -- engine = "paddle" uses Paddle-Lite. Use lang like "ppocr_ch" for model path /var/mobile/Media/1ferver/models/ppocr_ch
    -- Paddle-Lite supports Slim *.nb models
    engine = "apple" | "paddle" | "tesseract",
    lang = "zh-Hans",
    }
    Vision.framework supported OCR models by iOS version
    { -- iOS 13
    [1] = "en-US",
    }

    { -- iOS 14~15
    [1] = "en-US",
    [2] = "fr-FR",
    [3] = "it-IT",
    [4] = "de-DE",
    [5] = "es-ES",
    [6] = "pt-BR",
    [7] = "zh-Hans",
    [8] = "zh-Hant",
    }

    { -- iOS 16
    [ 1] = "en-US",
    [ 2] = "fr-FR",
    [ 3] = "it-IT",
    [ 4] = "de-DE",
    [ 5] = "es-ES",
    [ 6] = "pt-BR",
    [ 7] = "zh-Hans",
    [ 8] = "zh-Hant",
    [ 9] = "yue-Hans",
    [10] = "yue-Hant",
    [11] = "ko-KR",
    [12] = "ja-JP",
    [13] = "ru-RU",
    [14] = "uk-UA",
    }
  • binarization
    Number: threshold. See Auto binarization
    Table: custom binarization with tolerances. See Manual binarization
    String: custom binarization with tolerances. See Manual binarization

Returns

  • text
    String. Recognized text

  • details
    Table

    Details structure
    {
    {
    ["y"] = number_value,
    ["x"] = number_value,
    ["w"] = number_value,
    ["h"] = number_value,
    ["confidence"] = number_value(0.0000 ~ 1.0000),
    ["text"] = string_value,
    },
    ...
    }

Description

Recognize text in an image. Except no region params, other usage is the same as screen.ocr_text
Available in app version >= 1.3.8
PaddleLite Simplified Chinese standard model (requires extraction)
PaddleLite Simplified Chinese full model (requires extraction)
PaddleLite Traditional Chinese model (requires extraction)
PaddleLite Japanese model (requires extraction)
PaddleLite Korean model (requires extraction)
PaddleLite English alphanumeric model (requires extraction)
You can also download models from the PaddleOCR model list, convert them to det_opt.nb, cls_opt.nb, and rec_opt.nb, and pair them with the appropriate dict.txt

Examples

-- >=1.3.8
local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')

txt, info = img:ocr_text("en-US")
sys.toast("Result: "..txt:atrim())

txt, info = img:ocr_text("zh-Hans")
sys.toast("Result: "..txt:atrim())

txt, info = img:ocr_text({ engine = "apple", lang = "zh-Hans" }, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("Result: "..txt:atrim())

txt, info = img:ocr_text({ engine = "paddle", lang = "ppocr_ch" })
sys.toast("Result: "..txt:atrim())

Note: Uses functions outside this chapter sys.toast, string.atrim

local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')
local txt = img:ocr_text()
sys.toast("Result: "..txt:atrim())

local txt = img:ocr_text("eng", "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("Result: "..txt:atrim())

local txt = img:ocr_text("eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} })
sys.toast("Result: "..txt:atrim())

local txt = img:ocr_text({ lang = "chi_sim", white_list = "你我他" })
sys.toast("Result: "..txt:atrim())

local txt = img:ocr_text({ lang = "eng", white_list = "1234567890" }, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("Result: "..txt:atrim())

Note: Uses functions outside this chapter sys.toast, string.atrim