! Reconnaissance de texte dans une zone de l’écran (screen.ocr_text)
Déclaration
résultat de la reconnaissance, détails du résultat = screen.ocr_text(gauche, haut, droite, bas [, options du moteur, options de binarisation ])
Paramètres
-
gauche, haut, droite, bas
Entiers, zone de l’écran ;0, 0, 0, 0représente tout l’écran -
options du moteur
Paramètre facultatif, type table, pour choisir la langue et le moteur de reconnaissanceStructure des paramètres
{
-- Si le champ engine vaut "apple", utilise le Vision.framework intégré à iOS 13 et aux versions ultérieures
-- La fonction image.vision_supported_recognition_languages() permet d’obtenir la liste des modèles OCR pris en charge par Vision.framework
-- Si le champ engine vaut "paddle", utilise le moteur Paddle-Lite. Le modèle peut être indiqué avec lang
-- Par exemple, lang = "ppocr_ch" utilise le modèle /var/mobile/Media/1ferver/models/ppocr_ch
-- Le moteur Paddle-Lite prend en charge les modèles Slim au format *.nb
engine = "apple" | "paddle" | "tesseract",
lang = "zh-Hans",
}Liste des modèles OCR pris en charge par le Vision.framework intégré selon la version d’iOS
{ -- 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",
} -
options de binarisation
Nombre réel, seuil de binarisation ; voir Binarisation automatique d’une image
Type table, écart de couleur personnalisé pour la binarisation ; voir Binarisation manuelle d’une image
Chaîne, écart de couleur personnalisé pour la binarisation ; voir Binarisation manuelle d’une image
Valeur de retour
-
résultat de la reconnaissance
Chaîne, texte renvoyé par la reconnaissance -
détails du résultat
Type tableStructure détaillée du résultat OCR
{
{
["y"] = number_value,
["x"] = number_value,
["w"] = number_value,
["h"] = number_value,
["confidence"] = number_value(0.0000 ~ 1.0000),
["text"] = string_value,
},
...
}
Description
Les paramètres et valeurs de retour des coordonnées de cette fonction dépendent du système de coordonnées initialisé par
screen.init
Pour assurer la compatibilité ascendante, si aucun moteur de reconnaissance n’est indiqué, utilise par défaut le moteur tesseract obsolète pour la reconnaissance de texte
Les moteurs de reconnaissance Apple et PaddleLite sont pris en charge à partir de la version 1.3.8
Modèle PaddleLite chinois simplifié standard (à décompresser)
Modèle PaddleLite chinois simplifié complet (à décompresser)
Modèle PaddleLite de reconnaissance du chinois traditionnel (à décompresser)
Modèle PaddleLite de reconnaissance des lettres et chiffres anglais (à décompresser)
Modèle PaddleLite de reconnaissance du japonais (à décompresser)
Modèle PaddleLite de reconnaissance du coréen (à décompresser)
Vous pouvez également télécharger la conversion correspondante depuis la liste des modèles PaddleOCR endet_opt.nb,cls_opt.nbetrec_opt.nb, puis trouver ledict.txtcorrespondant pour l’utiliser
Exemple
-- Exemple pour les versions 1.3.8 et ultérieures
txt, info = screen.ocr_text(187, 882, 298, 914, "en-US") -- iOS 13 et versions ultérieures peuvent utiliser le modèle Apple intégré en-US pour reconnaître les lettres et chiffres anglais
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(187, 882, 298, 914, "zh-Hans") -- iOS 14 et versions ultérieures peuvent utiliser le modèle Apple intégré zh-Hans pour reconnaître le chinois simplifié
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(187, 882, 298, 914, {
engine = "apple", -- Utilise le moteur Apple
lang = "zh-Hans" -- Utilise le modèle de reconnaissance du chinois simplifié
}, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(0, 0, 0, 0, {
engine = "paddle", -- Utilise le moteur OCR PaddleLite
lang = "ppocr_ch", -- Utilise le modèle ppocr_ch
})
sys.toast("识别结果:"..txt:atrim())
Remarque : le code ci-dessus utilise les fonctions hors de ce chapitre sys.toast et string.atrim
Héritage des anciennes versions (déconseillé)
Le tesseract intégré n’est plus recommandé, mais reste le moteur OCR par défaut de XXTouch dans la version actuelle afin d’assurer la compatibilité avec les anciens scripts
Le moteur OCR intégré par défaut est tesseract version 3.02 ; une version incorrecte ou un fichier de dictionnaire endommagé peut provoquer le plantage du service de scripts XXTouch
XXTouch intègre déjà la bibliothèque de reconnaissance eng [A-Za-z0-9] capable de reconnaître les lettres anglaises et les chiffres courants
Pour reconnaître le chinois simplifié ou d’autres langues
vous devez importer manuellement les fichiers de dictionnaire correspondants dans le répertoire de l’appareil/var/mobile/Media/1ferver/tessdata/
Voici une bibliothèque de caractères chinois simplifiés (à décompresser)
Exemple hérité des anciennes versions (déconseillé)
-- Exemple 1 :
local txt = screen.ocr_text(187, 882, 298, 914) -- La configuration par défaut utilise le moteur tesseract en mode lettres et chiffres anglais
sys.toast("识别结果:"..txt:atrim())
--
-- Exemple 2 :
local txt = screen.ocr_text(465, 241, 505, 269, "eng", "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Reconnaissance avec binarisation par écart de couleur
sys.toast("识别结果:"..txt:atrim())
--
-- Exemple 3 :
local txt = screen.ocr_text(465, 241, 505, 269, "eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} }) -- Reconnaissance avec binarisation par écart de couleur, comme ci-dessus
sys.toast("识别结果:"..txt:atrim())
--
-- Exemple 4 :
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "chi_sim", -- Utilise la bibliothèque chinoise simplifiée du moteur tesseract (attention, elle n’est pas intégrée)
white_list = "你我他", -- Définit la liste blanche à "你我他"
})
sys.toast("识别结果:"..txt:atrim())
--
-- Exemple 5 :
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "eng",
white_list = "1234567890", -- Utilise une liste blanche personnalisée pour limiter la reconnaissance aux chiffres
}, "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Reconnaissance avec binarisation par écart de couleur
sys.toast("识别结果:"..txt:atrim())