Chuyển tới nội dung chính

! Nhận dạng văn bản trong ảnh (:ocr_text)

Khai báo

text, details = img:ocr_text([ engine_options, binarization ])

Tham số

  • engine_options
    Kiểu bảng, không bắt buộc. Chọn ngôn ngữ và công cụ OCR

    Cấu trúc
    {
    -- engine = "apple" sử dụng Vision.framework (iOS 13 trở lên)
    -- Dùng image.vision_supported_recognition_languages() để liệt kê các mô hình được hỗ trợ
    -- engine = "paddle" sử dụng Paddle-Lite. Đặt lang như "ppocr_ch" cho đường dẫn mô hình /var/mobile/Media/1ferver/models/ppocr_ch
    -- Paddle-Lite hỗ trợ các mô hình Slim *.nb
    engine = "apple" | "paddle" | "tesseract",
    lang = "zh-Hans",
    }
    Các mô hình OCR được Vision.framework hỗ trợ theo phiên bản 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",
    }
  • binarization
    Kiểu số: ngưỡng. Xem Tự động nhị phân hóa
    Kiểu bảng: nhị phân hóa tùy chỉnh với độ sai lệch. Xem Nhị phân hóa thủ công
    Kiểu chuỗi: nhị phân hóa tùy chỉnh với độ sai lệch. Xem Nhị phân hóa thủ công

Giá trị trả về

  • text
    Kiểu chuỗi. Văn bản được nhận dạng

  • details
    Kiểu bảng

    Cấu trúc thông tin chi tiết
    {
    {
    ["y"] = number_value,
    ["x"] = number_value,
    ["w"] = number_value,
    ["h"] = number_value,
    ["confidence"] = number_value(0.0000 ~ 1.0000),
    ["text"] = string_value,
    },
    ...
    }

Mô tả

Nhận dạng văn bản trong ảnh. Cách sử dụng giống với screen.ocr_text, ngoại trừ việc không cần tham số vùng.
Khả dụng từ phiên bản ứng dụng >= 1.3.8
Mô hình tiếng Trung giản thể tiêu chuẩn cho PaddleLite (cần giải nén)
Mô hình tiếng Trung giản thể đầy đủ cho PaddleLite (cần giải nén)
Mô hình tiếng Trung phồn thể cho PaddleLite (cần giải nén)
Mô hình tiếng Nhật cho PaddleLite (cần giải nén)
Mô hình tiếng Hàn cho PaddleLite (cần giải nén)
Mô hình chữ và số tiếng Anh cho PaddleLite (cần giải nén)
Bạn cũng có thể tải các mô hình từ danh sách mô hình PaddleOCR, chuyển đổi chúng thành det_opt.nb, cls_opt.nbrec_opt.nb, rồi sử dụng cùng tệp dict.txt phù hợp

Ví dụ

-- phiên bản >= 1.3.8
local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')

txt, info = img:ocr_text("en-US")
sys.toast("Kết quả: "..txt:atrim())

txt, info = img:ocr_text("zh-Hans")
sys.toast("Kết quả: "..txt:atrim())

txt, info = img:ocr_text({ engine = "apple", lang = "zh-Hans" }, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("Kết quả: "..txt:atrim())

txt, info = img:ocr_text({ engine = "paddle", lang = "ppocr_ch" })
sys.toast("Kết quả: "..txt:atrim())

Lưu ý: Ví dụ trên sử dụng các hàm ngoài chương này sys.toast, string.atrim

Ví dụ cũ (không khuyến nghị)

local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')
-- Ví dụ 1:
local txt = img:ocr_text() -- Cấu hình mặc định dùng công cụ Tesseract ở chế độ nhận dạng chữ và số tiếng Anh
sys.toast("Kết quả: "..txt:atrim())
--
-- Ví dụ 2:
local txt = img:ocr_text("eng", "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Nhận dạng sau khi nhị phân hóa theo độ lệch màu
sys.toast("Kết quả: "..txt:atrim())
--
-- Ví dụ 3:
local txt = img:ocr_text("eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} }) -- Nhị phân hóa theo độ lệch màu, tương đương ví dụ trên
sys.toast("Kết quả: "..txt:atrim())
--
-- Ví dụ 4:
local txt = img:ocr_text({ lang = "chi_sim", white_list = "你我他" }) -- Dùng thư viện tiếng Trung giản thể của Tesseract (không được tích hợp sẵn); danh sách trắng là "你我他"
sys.toast("Kết quả: "..txt:atrim())
--
-- Ví dụ 5:
local txt = img:ocr_text({ lang = "eng", white_list = "1234567890" }, "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Dùng danh sách trắng để chỉ nhận dạng chữ số và nhị phân hóa theo độ lệch màu
sys.toast("Kết quả: "..txt:atrim())

Lưu ý: Ví dụ trên sử dụng các hàm ngoài chương này sys.toast, string.atrim