Pular para o conteúdo principal

! Reconhecimento de texto na imagem (:ocr_text)

Declaração

resultado_do_reconhecimento, detalhes_do_resultado = imagem:ocr_text([ opcoes_do_mecanismo, opcoes_de_binarizacao ])

Parâmetros

  • opcoes_do_mecanismo
    Tabela opcional usada para escolher o idioma e o mecanismo de reconhecimento

    Estrutura dos parâmetros
    {
    -- quando o campo engine for "apple", usa o Vision.framework integrado ao iOS 13 ou posterior
    -- use a função image.vision_supported_recognition_languages() para obter a lista de modelos OCR compatíveis com o Vision.framework
    -- quando o campo engine for "paddle", usa o mecanismo Paddle-Lite; use lang para especificar o modelo
    -- por exemplo, lang = "ppocr_ch" usa o modelo /var/mobile/Media/1ferver/models/ppocr_ch
    -- o mecanismo Paddle-Lite aceita modelos Slim no formato *.nb
    engine = "apple" | "paddle" | "tesseract",
    lang = "zh-Hans",
    }
    Modelos OCR compatíveis com o Vision.framework integrado em cada versão do 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",
    }
  • opcoes_de_binarizacao
    Número real: limiar de binarização; consulte Binarização automática de imagem
    Tabela: desvio de cor de binarização personalizado; consulte Binarização manual de imagem
    Texto: desvio de cor de binarização personalizado; consulte Binarização manual de imagem

Valores retornados

  • resultado_do_reconhecimento
    Texto; texto retornado pelo reconhecimento

  • detalhes_do_resultado
    Tabela

    Estrutura dos detalhes do resultado do OCR
    {
    {
    ["y"] = number_value,
    ["x"] = number_value,
    ["w"] = number_value,
    ["h"] = number_value,
    ["confidence"] = number_value(0.0000 ~ 1.0000),
    ["text"] = string_value,
    },
    ...
    }

Descrição

Reconhece texto em uma imagem. Exceto pela ausência do parâmetro de região, o comportamento é igual ao de Reconhecimento de texto em uma região da tela (screen.ocr_text).
Compatível com versões do software a partir da 1.3.8
Modelo PaddleLite comum em chinês simplificado (requer descompactação)
Modelo PaddleLite completo em chinês simplificado (requer descompactação)
Modelo PaddleLite de reconhecimento de chinês tradicional (requer descompactação)
Modelo PaddleLite de reconhecimento de japonês (requer descompactação)
Modelo PaddleLite de reconhecimento de coreano (requer descompactação)
Modelo PaddleLite de reconhecimento de letras e números em inglês (requer descompactação)
Você também pode baixar o modelo correspondente na lista de modelos PaddleOCR, convertê-lo em det_opt.nb, cls_opt.nb e rec_opt.nb, e então usá-lo com o dict.txt correspondente.

Exemplo

-- exemplo para a versão 1.3.8 ou posterior
local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')

txt, info = img:ocr_text("en-US") -- o modelo en-US integrado da Apple pode reconhecer letras e números em inglês no iOS 13 ou posterior
sys.toast("识别结果:"..txt:atrim())

txt, info = img:ocr_text("zh-Hans") -- o modelo zh-Hans integrado da Apple pode reconhecer chinês simplificado no iOS 14 ou posterior
sys.toast("识别结果:"..txt:atrim())

txt, info = img:ocr_text({
engine = "apple", -- usar o mecanismo Apple
lang = "zh-Hans" -- usar o modelo de reconhecimento de chinês simplificado
}, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("识别结果:"..txt:atrim())

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

Observação: o código acima usa as funções sys.toast e string.atrim, que não pertencem a este capítulo.

Exemplo legado de versão antiga (não recomendado)

local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')
-- exemplo 1:
local txt = img:ocr_text() -- a configuração padrão usa o mecanismo tesseract no modo de letras e números em inglês
sys.toast("识别结果:"..txt:atrim())
--
-- exemplo 2:
local txt = img:ocr_text("eng", "9D5D39-0F1F26,D3D3D2-2C2C2D") -- usar binarização por desvio de cor no reconhecimento
sys.toast("识别结果:"..txt:atrim())
--
-- exemplo 3:
local txt = img:ocr_text("eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} }) -- usar binarização por desvio de cor no reconhecimento, como acima
sys.toast("识别结果:"..txt:atrim())
--
-- exemplo 4:
local txt = img:ocr_text({
lang = "chi_sim", -- usar a biblioteca de chinês simplificado do mecanismo tesseract (a biblioteca não é integrada)
white_list = "你我他", -- definir a lista de permissões como "你我他"
})
sys.toast("识别结果:"..txt:atrim())
--
-- exemplo 5:
local txt = img:ocr_text({
lang = "eng",
white_list = "1234567890", -- usar uma lista de permissões personalizada para reconhecer somente números
}, "9D5D39-0F1F26,D3D3D2-2C2C2D") -- usar binarização por desvio de cor no reconhecimento
sys.toast("识别结果:"..txt:atrim())

Observação: o código acima usa as funções sys.toast e string.atrim, que não pertencem a este capítulo.