Saltar al contenido principal

! Reconocer texto en una imagen (:ocr_text)

Declaración

resultado_reconocido, detalles_del_resultado = imagen:ocr_text([opciones_del_motor, opciones_de_binarización])

Parámetros

  • opciones_del_motor
    Tabla opcional para elegir el idioma y el motor de reconocimiento.

    Estructura de parámetros
    {
    -- Si engine es "apple", usa Vision.framework integrado en iOS 13 o posterior
    -- Usa image.vision_supported_recognition_languages() para obtener los modelos OCR compatibles con Vision.framework
    -- Si engine es "paddle", usa el motor Paddle-Lite; lang permite especificar el modelo
    -- Por ejemplo, lang = "ppocr_ch" usa /var/mobile/Media/1ferver/models/ppocr_ch
    -- Paddle-Lite admite modelos Slim en formato *.nb
    engine = "apple" | "paddle" | "tesseract",
    lang = "zh-Hans",
    }
    Modelos OCR de Vision.framework integrados 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
    Número real: umbral de binarización; consulta Binarización automática de una imagen.
    Tabla: desviación de color personalizada; consulta Binarización manual de una imagen.
    Texto: desviación de color personalizada; consulta Binarización manual de una imagen.

Valor de retorno

  • resultado_reconocido
    Texto reconocido devuelto por el motor.

  • detalles_del_resultado
    Tabla.

    Estructura detallada del resultado 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

Reconoce texto en una imagen. Excepto por no necesitar parámetros de región, coincide con reconocimiento de texto de una región de la pantalla (screen.ocr_text). Disponible desde la versión 1.3.8
Modelo PaddleLite de chino simplificado, versión normal (se debe descomprimir)
Modelo PaddleLite de chino simplificado, versión completa (se debe descomprimir)
Modelo PaddleLite de chino tradicional (se debe descomprimir)
Modelo PaddleLite de japonés (se debe descomprimir)
Modelo PaddleLite de coreano (se debe descomprimir)
Modelo PaddleLite de inglés y números (se debe descomprimir)
También puedes descargar y convertir el modelo correspondiente desde la lista de modelos de PaddleOCR y usarlo junto con det_opt.nb, cls_opt.nb y rec_opt.nb, además del dict.txt correspondiente.

Ejemplo

-- Ejemplo para versiones 1.3.8 y posteriores
local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')

txt, info = img:ocr_text("en-US") -- Disponible desde iOS 13; usa el modelo Apple en-US para reconocer inglés y números
sys.toast("识别结果:"..txt:atrim())

txt, info = img:ocr_text("zh-Hans") -- Disponible desde iOS 14; usa el modelo Apple zh-Hans para reconocer chino simplificado
sys.toast("识别结果:"..txt:atrim())

txt, info = img:ocr_text({
engine = "apple", -- Usar el motor Apple
lang = "zh-Hans" -- Usar el modelo de reconocimiento de chino simplificado
}, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("识别结果:"..txt:atrim())

txt, info = img:ocr_text({
engine = "paddle", -- Usar el motor OCR PaddleLite
lang = "ppocr_ch", -- Usar el modelo ppocr_ch
})
sys.toast("识别结果:"..txt:atrim())

Nota: El código anterior usa las funciones de otros capítulos sys.toast y string.atrim.

Ejemplos heredados (no recomendados)

local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')
-- Ejemplo 1:
local txt = img:ocr_text() -- La configuración predeterminada usa el motor tesseract en modo de reconocimiento de inglés y números
sys.toast("识别结果:"..txt:atrim())
--
-- Ejemplo 2:
local txt = img:ocr_text("eng", "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Reconocimiento con binarización por desviación de color
sys.toast("识别结果:"..txt:atrim())
--
-- Ejemplo 3:
local txt = img:ocr_text("eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} }) -- Reconocimiento con binarización por desviación de color, igual que arriba
sys.toast("识别结果:"..txt:atrim())
--
-- Ejemplo 4:
local txt = img:ocr_text({
lang = "chi_sim", -- Usar la biblioteca de chino simplificado del motor tesseract (no está integrada)
white_list = "你我他", -- Establecer "你我他" como lista blanca
})
sys.toast("识别结果:"..txt:atrim())
--
-- Ejemplo 5:
local txt = img:ocr_text({
lang = "eng",
white_list = "1234567890", -- Usar una lista blanca personalizada para limitar el reconocimiento a números
}, "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Reconocimiento con binarización por desviación de color
sys.toast("识别结果:"..txt:atrim())

Nota: El código anterior usa las funciones de otros capítulos sys.toast y string.atrim.