본문으로 건너뛰기

! 화면 영역 텍스트 인식 (screen.ocr_text)

선언

인식 결과, 결과 세부 정보 = screen.ocr_text(왼쪽, 위쪽, 오른쪽, 아래쪽 [, 엔진 옵션, 이진화 옵션 ])

매개변수

  • 왼쪽, 위쪽, 오른쪽, 아래쪽
    정수형. 화면의 영역을 나타내며 0, 0, 0, 0을 전달하면 전체 화면을 의미합니다.

  • 엔진 옵션
    테이블형 선택 매개변수. 인식 언어 및 인식 엔진을 선택합니다.

    매개변수 구조
    {
    -- engine 필드를 "apple"로 설정하면 iOS 13 이상에 내장된 Apple Vision.framework로 인식합니다.
    -- image.vision_supported_recognition_languages() 함수로 Vision.framework가 지원하는 OCR 모델 목록을 가져올 수 있습니다.
    -- engine 필드를 "paddle"로 설정하면 Paddle-Lite 엔진으로 인식합니다. lang으로 모델을 지정할 수 있습니다.
    -- 예를 들어 lang = "ppocr_ch"이면 /var/mobile/Media/1ferver/models/ppocr_ch 모델을 사용합니다.
    -- Paddle-Lite 엔진은 *.nb 형식의 Slim 모델을 지원합니다.
    engine = "apple" | "paddle" | "tesseract",
    lang = "zh-Hans",
    }
    각 iOS 버전에 내장된 Vision.framework 지원 OCR 모델 목록
    { -- 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",
    }
  • 이진화 옵션
    실수형. 이진화 임계값이며 이미지 자동 이진화를 참고하십시오.
    테이블형. 사용자 지정 이진화 색상 편차이며 이미지 수동 이진화를 참고하십시오.
    문자열형. 사용자 지정 이진화 색상 편차이며 이미지 수동 이진화를 참고하십시오.

반환값

  • 인식 결과
    문자열형. 인식된 텍스트를 반환합니다.

  • 결과 세부 정보
    테이블형

    OCR 인식 결과의 세부 정보 구조
    {
    {
    ["y"] = number_value,
    ["x"] = number_value,
    ["w"] = number_value,
    ["h"] = number_value,
    ["confidence"] = number_value(0.0000 ~ 1.0000),
    ["text"] = string_value,
    },
    ...
    }

설명

이 함수의 좌표 매개변수와 반환값은 모두 screen.init 함수로 초기화한 좌표계의 영향을 받습니다.
이전 버전과의 호환성을 위해 인식 엔진을 지정하지 않으면 기본적으로 더 이상 권장하지 않는 tesseract 엔진으로 텍스트를 인식합니다.
소프트웨어 버전 1.3.8 이상에서 Apple 및 PaddleLite 인식 엔진을 지원합니다.
PaddleLite 중국어 간체 일반 모델(압축 해제 필요)
PaddleLite 중국어 간체 전체 모델(압축 해제 필요)
PaddleLite 중국어 번체 인식 모델(압축 해제 필요)
PaddleLite 영어·숫자 인식 모델(압축 해제 필요)
PaddleLite 일본어 인식 모델(압축 해제 필요)
PaddleLite 한국어 인식 모델(압축 해제 필요)
PaddleOCR 모델 목록에서 해당 모델을 다운로드하여 det_opt.nb, cls_opt.nb, rec_opt.nb로 변환한 뒤 해당 dict.txt와 함께 사용할 수도 있습니다.

예제

-- 1.3.8 이상 버전 예제
txt, info = screen.ocr_text(187, 882, 298, 914, "en-US") -- iOS 13 이상에서는 Apple 내장 en-US 모델로 영어와 숫자를 인식할 수 있습니다.
sys.toast("识别结果:"..txt:atrim())

txt, info = screen.ocr_text(187, 882, 298, 914, "zh-Hans") -- iOS 14 이상에서는 Apple 내장 zh-Hans 모델로 중국어 간체를 인식할 수 있습니다.
sys.toast("识别结果:"..txt:atrim())

txt, info = screen.ocr_text(187, 882, 298, 914, {
engine = "apple", -- Apple 엔진을 사용합니다.
lang = "zh-Hans" -- 중국어 간체 인식 모델을 사용합니다.
}, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("识别结果:"..txt:atrim())

txt, info = screen.ocr_text(0, 0, 0, 0, {
engine = "paddle", -- PaddleLite OCR 엔진을 사용합니다.
lang = "ppocr_ch", -- ppocr_ch 모델을 사용합니다.
})
sys.toast("识别结果:"..txt:atrim())

참고: 위 코드에서는 이 장에서 다루지 않는 함수 sys.toast, string.atrim을 사용했습니다.

기존 버전 기능(권장하지 않음)

내장 tesseract는 더 이상 사용을 권장하지 않습니다. 기존 스크립트와의 호환성을 위해 현재 버전의 XXTouch에서도 기본 OCR 엔진으로 남아 있습니다.
내장 기본 OCR 엔진은 tesseract 3.02 버전이며 버전이 맞지 않거나 언어 데이터 파일이 손상되면 XXTouch 스크립트 서비스가 종료될 수 있습니다.
XXTouch에는 일반적인 영어와 숫자를 인식할 수 있는 eng 인식 라이브러리 [A-Za-z0-9]가 내장되어 있습니다.
중국어 간체나 다른 언어의 텍스트를 인식해야 한다면
해당 언어 데이터 파일을 기기의 /var/mobile/Media/1ferver/tessdata/ 디렉터리에 직접 가져와야 합니다.
중국어 간체 언어 데이터(압축 해제 필요)를 제공합니다.

기존 버전 기능 예제(권장하지 않음)

-- 예제 1:
local txt = screen.ocr_text(187, 882, 298, 914) -- 기본 구성은 tesseract 엔진의 영어·숫자 모드로 텍스트를 인식합니다.
sys.toast("识别结果:"..txt:atrim())
--
-- 예제 2:
local txt = screen.ocr_text(465, 241, 505, 269, "eng", "9D5D39-0F1F26,D3D3D2-2C2C2D") -- 색상 편차 이진화를 사용해 인식합니다.
sys.toast("识别结果:"..txt:atrim())
--
-- 예제 3:
local txt = screen.ocr_text(465, 241, 505, 269, "eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} }) -- 위와 같이 색상 편차 이진화를 사용해 인식합니다.
sys.toast("识别结果:"..txt:atrim())
--
-- 예제 4:
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "chi_sim", -- tesseract 엔진의 중국어 간체 라이브러리로 인식합니다(중국어 간체 라이브러리는 내장되어 있지 않습니다).
white_list = "你我他", -- 허용 목록을 "你我他"로 설정합니다.
})
sys.toast("识别结果:"..txt:atrim())
--
-- 예제 5:
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "eng",
white_list = "1234567890", -- 사용자 지정 허용 목록으로 숫자만 인식하도록 제한합니다.
}, "9D5D39-0F1F26,D3D3D2-2C2C2D") -- 색상 편차 이진화를 사용해 인식합니다.
sys.toast("识别结果:"..txt:atrim())