跳至主要內容

! 圖片文字識別 (:ocr_text)

聲明

識別結果, 結果詳情 = 圖片:ocr_text([ 引擎選項, 二值化選項 ])

參數

  • 引擎選項
    可選參數,表型,用於選擇識別語言及識別引擎

    參數結構
    {
    -- 如果將 engine 字段設為 "apple",則使用 iOS 13 以上蘋果自帶的 Vision.framework 進行識別
    -- 你可以使用 image.vision_supported_recognition_languages() 函數獲取 Vision.framework 支持的 OCR 模型列表
    -- 如果將 engine 字段設為 "paddle",則使用 Paddle-Lite 引擎識別。可使用 lang 指定模型
    -- 例如 lang = "ppocr_ch" 則使用模型 /var/mobile/Media/1ferver/models/ppocr_ch
    -- Paddle-Lite 引擎支持 *.nb 格式的 Slim 模型
    engine = "apple" | "paddle" | "tesseract",
    lang = "zh-Hans",
    }
    各版本 iOS 內置的 Vision.framework 支援的 OCR 模型清單
    { -- 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",
    }
  • 二值化選項
    實數型,二值化閾值,可參考 圖片自動二值化
    表型,自訂二值化色偏,參考 圖片手動二值化
    文字型,自訂二值化色偏,參考 圖片手動二值化

回傳值

  • 識別結果
    文字型,識別返回的文字

  • 結果詳情
    表型

    OCR 識別的結果詳情結構
    {
    {
    ["y"] = number_value,
    ["x"] = number_value,
    ["w"] = number_value,
    ["h"] = number_value,
    ["confidence"] = number_value(0.0000 ~ 1.0000),
    ["text"] = string_value,
    },
    ...
    }

說明

識別圖片中的文字,除了不需要區域參數,其它和 螢幕區域文字識別 (screen.ocr_text) 一致
軟體版本在 1.3.8 以上可使用
PaddleLite 簡體中文普通版模型(需要解壓縮)
PaddleLite 簡體中文完全版模型(需要解壓縮)
PaddleLite 繁體中文識別模型(需要解壓縮)
PaddleLite 日文識別模型(需要解壓縮)
PaddleLite 韓文識別模型(需要解壓縮)
PaddleLite 英文數字識別模型(需要解壓縮)
也可從 PaddleOCR 模型清單 下載對應模型轉換成 det_opt.nbcls_opt.nbrec_opt.nb, 然後找到對應的 dict.txt 配套使用

範例

-- 1.3.8 以上示例
local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')

txt, info = img:ocr_text("en-US") -- iOS 13 以上可使用蘋果內置的 en-US 模型識別英文數字
sys.toast("识别结果:"..txt:atrim())

txt, info = img:ocr_text("zh-Hans") -- iOS 14 以上可使用蘋果內置的 zh-Hans 模型識別簡體中文
sys.toast("识别结果:"..txt:atrim())

txt, info = img:ocr_text({
engine = "apple", -- 使用 Apple 引擎
lang = "zh-Hans" -- 使用簡體中文識別模型
}, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("识别结果:"..txt:atrim())

txt, info = img:ocr_text({
engine = "paddle", -- 使用 PaddleLite OCR 引擎
lang = "ppocr_ch", -- 使用 ppocr_ch 模型
})
sys.toast("识别结果:"..txt:atrim())

:上述代碼中使用了非本章函式 sys.toaststring.atrim

舊版遺留範例(不推薦)

local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')
-- 示例 1:
local txt = img:ocr_text() -- 默認配置是使用 tesseract 引擎英文數字模式識別文字
sys.toast("识别结果:"..txt:atrim())
--
-- 示例 2:
local txt = img:ocr_text("eng", "9D5D39-0F1F26,D3D3D2-2C2C2D") -- 使用色偏二值化識別
sys.toast("识别结果:"..txt:atrim())
--
-- 示例 3:
local txt = img:ocr_text("eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} }) -- 使用色偏二值化識別,同上
sys.toast("识别结果:"..txt:atrim())
--
-- 示例 4:
local txt = img:ocr_text({
lang = "chi_sim", -- 使用 tesseract 引擎簡體中文庫識別(注意,簡體中文庫不是內置的)
white_list = "你我他", -- 白名單設為 "你我他"
})
sys.toast("识别结果:"..txt:atrim())
--
-- 示例 5:
local txt = img:ocr_text({
lang = "eng",
white_list = "1234567890", -- 自定義使用白名單限制僅識別為數字
}, "9D5D39-0F1F26,D3D3D2-2C2C2D") -- 使用色偏二值化識別
sys.toast("识别结果:"..txt:atrim())

:上述代碼中使用了非本章函式 sys.toaststring.atrim