! 画面領域の文字認識 (screen.ocr_text)
宣言
認識結果, 結果の詳細 = screen.ocr_text(左, 上, 右, 下 [, エンジンオプション, 二値化オプション ])
パラメータ
-
左、上、右、下
整数。画面上の領域を表します。0, 0, 0, 0を渡すと画面全体が対象になります -
エンジンオプション
省略可能なテーブル。認識言語と認識エンジンを選択しますパラメータの構造
{
-- engine フィールドを "apple" に設定すると、iOS 13 以降に搭載された Apple の 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.init関数で初期化した座標系の影響を受けます
後方互換性を維持するため、認識エンジンを指定しない場合は、デフォルトで非推奨の tesseract エンジンを使用して文字を認識します
Apple および PaddleLite 認識エンジンを使用するには、ソフトウェアバージョン 1.3.8 以降が必要です
PaddleLite 簡体字中国語標準版モデル(展開が必要)
PaddleLite 簡体字中国語完全版モデル(展開が必要)
PaddleLite 繁体字中国語認識モデル(展開が必要)
PaddleLite 英数字認識モデル(展開が必要)
PaddleLite 日本語認識モデル(展開が必要)
PaddleLite 韓国語認識モデル(展開が必要)
PaddleOCR モデル一覧から対応するモデルをダウンロードしてdet_opt.nb、cls_opt.nb、rec_opt.nbに変換し、対応するdict.txtと組み合わせて使用することもできます
使用例
-- 1.3.8 以降の使用例
txt, info = screen.ocr_text(187, 882, 298, 914, "en-US") -- iOS 13 以降では Apple の内蔵 en-US モデルを使用して英数字を認識できます
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(187, 882, 298, 914, "zh-Hans") -- iOS 14 以降では Apple の内蔵 zh-Hans モデルを使用して簡体字中国語を認識できます
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(187, 882, 298, 914, {
engine = "apple", -- Apple エンジンを使用します
lang = "zh-Hans" -- 簡体字中国語認識モデルを使用します
}, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(0, 0, 0, 0, {
engine = "paddle", -- PaddleLite OCR エンジンを使用します
lang = "ppocr_ch", -- ppocr_ch モデルを使用します
})
sys.toast("识别结果:"..txt:atrim())
注記:上記のコードでは、この章で扱っていない関数 sys.toast および string.atrim を使用しています
レガシー機能(非推奨)
内蔵の tesseract は現在推奨されていません。旧スクリプトとの互換性を維持するため、現在のバージョンの XXTouch でもデフォルトの OCR エンジンになっています
デフォルトの内蔵 OCR エンジンは tesseract 3.02 です。バージョンが一致しない場合や言語データファイルが破損している場合は、XXTouch スクリプトサービスがクラッシュすることがあります
XXTouch には eng 認識データ [A-Za-z0-9] が組み込まれており、一般的な英字と数字を認識できます
簡体字中国語またはその他の言語を認識する場合は
対応する言語データファイルをデバイスの/var/mobile/Media/1ferver/tessdata/ディレクトリに手動でインポートする必要があります
簡体字中国語の言語データ(展開が必要) を利用できます
レガシー機能の使用例(非推奨)
-- 使用例 1:
local txt = screen.ocr_text(187, 882, 298, 914) -- デフォルト設定では tesseract エンジンの英数字モードで文字を認識します
sys.toast("识别结果:"..txt:atrim())
--
-- 使用例 2:
local txt = screen.ocr_text(465, 241, 505, 269, "eng", "9D5D39-0F1F26,D3D3D2-2C2C2D") -- 色差による二値化を使用して認識します
sys.toast("识别结果:"..txt:atrim())
--
-- 使用例 3:
local txt = screen.ocr_text(465, 241, 505, 269, "eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} }) -- 上記と同じく、色差による二値化を使用して認識します
sys.toast("识别结果:"..txt:atrim())
--
-- 使用例 4:
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "chi_sim", -- tesseract エンジンの簡体字中国語データで認識します(簡体字中国語データは内蔵されていません)
white_list = "你我他", -- ホワイトリストを "你我他" に設定します
})
sys.toast("识别结果:"..txt:atrim())
--
-- 使用例 5:
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "eng",
white_list = "1234567890", -- ホワイトリストを指定して、数字だけを認識するように制限します
}, "9D5D39-0F1F26,D3D3D2-2C2C2D") -- 色差による二値化を使用して認識します
sys.toast("识别结果:"..txt:atrim())