Aller au contenu principal

! 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, 0 représente tout l’écran

  • options du moteur
    Paramètre facultatif, type table, pour choisir la langue et le moteur de reconnaissance

    Structure 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 table

    Structure 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 en det_opt.nb, cls_opt.nb et rec_opt.nb, puis trouver le dict.txt correspondant 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())