! 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ụ OCRCấ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ảngCấ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ànhdet_opt.nb,cls_opt.nbvàrec_opt.nb, rồi sử dụng cùng tệpdict.txtphù 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