! Reconocimiento de texto en una región de la pantalla (screen.ocr_text)
Declaración
resultado_del_reconocimiento, detalles_del_resultado = screen.ocr_text(izquierda, arriba, derecha, abajo [, opciones_del_motor, opciones_de_binarización ])
Parámetros
-
izquierda, arriba, derecha, abajo
Tipo entero, representan una región de la pantalla; pasar0, 0, 0, 0representa toda la pantalla -
opciones del motor
Parámetro opcional de tipo tabla, sirve para seleccionar el idioma y el motor de reconocimientoEstructura de los parámetros
{
-- Si el campo engine se establece en "apple", usa Vision.framework, incluido en iOS 13 y posteriores, para el reconocimiento
-- Se puede usar la función image.vision_supported_recognition_languages() para obtener la lista de modelos OCR compatibles con Vision.framework
-- Si el campo engine se establece en "paddle", usa el motor Paddle-Lite para el reconocimiento. Se puede especificar el modelo con lang
-- Por ejemplo, lang = "ppocr_ch" usa el modelo /var/mobile/Media/1ferver/models/ppocr_ch
-- El motor Paddle-Lite admite modelos Slim en formato *.nb
engine = "apple" | "paddle" | "tesseract",
lang = "zh-Hans",
}Lista de modelos OCR compatibles con Vision.framework integrado en cada versión de 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",
} -
opciones de binarización
Tipo real, umbral de binarización; consulta Binarización automática de imágenes
Tipo tabla, desviación de color personalizada para la binarización; consulta Binarización manual de imágenes
Tipo texto, desviación de color personalizada para la binarización; consulta Binarización manual de imágenes
Valores devueltos
-
resultado del reconocimiento
Tipo texto, texto devuelto por el reconocimiento -
detalles del resultado
Tipo tablaEstructura detallada del resultado del reconocimiento OCR
{
{
["y"] = number_value,
["x"] = number_value,
["w"] = number_value,
["h"] = number_value,
["confidence"] = number_value(0.0000 ~ 1.0000),
["text"] = string_value,
},
...
}
Descripción
Los parámetros de coordenadas y los valores devueltos de esta función están condicionados por el sistema de coordenadas inicializado mediante
screen.init
Para garantizar la compatibilidad con versiones anteriores, si no se especifica un motor de reconocimiento se usa de forma predeterminada el motor tesseract obsoleto
Los motores de reconocimiento Apple y PaddleLite solo son compatibles desde la versión de software 1.3.8
Modelo PaddleLite de chino simplificado, edición normal (requiere descompresión)
Modelo PaddleLite de chino simplificado, edición completa (requiere descompresión)
Modelo PaddleLite de reconocimiento de chino tradicional (requiere descompresión)
Modelo PaddleLite de reconocimiento de letras y números ingleses (requiere descompresión)
Modelo PaddleLite de reconocimiento de japonés (requiere descompresión)
Modelo PaddleLite de reconocimiento de coreano (requiere descompresión)
También se puede descargar el modelo correspondiente desde la lista de modelos de PaddleOCR, convertirlo endet_opt.nb,cls_opt.nbyrec_opt.nb, y usarlo junto con eldict.txtcorrespondiente
Ejemplo
-- Ejemplo de versión 1.3.8 o posterior
txt, info = screen.ocr_text(187, 882, 298, 914, "en-US") -- Desde iOS 13 se puede usar el modelo en-US integrado de Apple para reconocer letras y números ingleses
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(187, 882, 298, 914, "zh-Hans") -- Desde iOS 14 se puede usar el modelo zh-Hans integrado de Apple para reconocer chino simplificado
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(187, 882, 298, 914, {
engine = "apple", -- Usa el motor Apple
lang = "zh-Hans" -- Usa el modelo de reconocimiento de chino simplificado
}, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(0, 0, 0, 0, {
engine = "paddle", -- Usa el motor OCR PaddleLite
lang = "ppocr_ch", -- Usa el modelo ppocr_ch
})
sys.toast("识别结果:"..txt:atrim())
Nota: el código anterior usa las funciones sys.toast y string.atrim, que no pertenecen a este capítulo.
Restos de versiones antiguas (no recomendado)
El tesseract integrado ya no se recomienda; solo se conserva para garantizar la compatibilidad con scripts antiguos y sigue siendo el motor OCR predeterminado de XXTouch en la versión actual
El motor OCR integrado predeterminado es tesseract 3.02; una versión incorrecta o un archivo de diccionario dañado puede hacer que el servicio de scripts de XXTouch se bloquee
XXTouch incluye el diccionario de reconocimiento eng [A-Za-z0-9], que reconoce letras y números ingleses habituales
Si se necesita reconocer texto en chino simplificado u otros idiomas
Hay que importar manualmente los archivos de diccionario correspondientes al directorio/var/mobile/Media/1ferver/tessdata/del dispositivo
Aquí se proporciona un diccionario de chino simplificado (requiere descompresión)
Ejemplos de versiones antiguas (no recomendado)
-- Ejemplo 1:
local txt = screen.ocr_text(187, 882, 298, 914) -- La configuración predeterminada usa el motor tesseract en modo de reconocimiento de letras y números ingleses
sys.toast("识别结果:"..txt:atrim())
--
-- Ejemplo 2:
local txt = screen.ocr_text(465, 241, 505, 269, "eng", "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Reconocimiento mediante binarización por desviación de color
sys.toast("识别结果:"..txt:atrim())
--
-- Ejemplo 3:
local txt = screen.ocr_text(465, 241, 505, 269, "eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} }) -- Reconocimiento mediante binarización por desviación de color, igual que el anterior
sys.toast("识别结果:"..txt:atrim())
--
-- Ejemplo 4:
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "chi_sim", -- Usa el diccionario de chino simplificado del motor tesseract (atención: no está incluido de forma predeterminada)
white_list = "你我他", -- Establece la lista blanca en "你我他"
})
sys.toast("识别结果:"..txt:atrim())
--
-- Ejemplo 5:
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "eng",
white_list = "1234567890", -- Usa una lista blanca personalizada para limitar el reconocimiento a números
}, "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Reconocimiento mediante binarización por desviación de color
sys.toast("识别结果:"..txt:atrim())