! 圖片文字識別 (: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.nb、cls_opt.nb、rec_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.toast、string.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.toast、string.atrim