Giữ chữ

PixGamma dò, đo và dựng lại chữ trên phím, nhãn, banner, kể cả tiếng Việt; số đo và giới hạn.

PixGammaCập nhật 23/10/2026
chữocr

Chữ là chỗ AI phóng ảnh hay sai nhất: nét bị cong, chữ nhỏ bị vẽ thành chữ khác, dấu tiếng Việt rơi mất. PixGamma xử lý chữ bằng một bước riêng.

Ảnh sản phẩm: bàn phím ThinkPad đèn nền từ 480 px lên 4x, chữ trên phím đúng từng ký tựẢnh sản phẩm: bàn phím ThinkPad đèn nền từ 480 px lên 4x, chữ trên phím đúng từng ký tự
Ảnh sản phẩm: bàn phím ThinkPad đèn nền từ 480 px lên 4x, chữ trên phím đúng từng ký tự
Ảnh chụp màn hình: giao diện 720 px phóng 2x, chữ rõ, giữ dấu tiếng ViệtẢnh chụp màn hình: giao diện 720 px phóng 2x, chữ rõ, giữ dấu tiếng Việt
Ảnh chụp màn hình: giao diện 720 px phóng 2x, chữ rõ, giữ dấu tiếng Việt

Cách làm

  1. Dò chữ. Apple Vision nhận diện chính xác với vi-VT và en-US, chạy trên ảnh gốc, trên ảnh phóng 2x và trên ảnh đã phóng để bắt được cả chữ nhỏ trên phím. Chữ đọc được ghi vào báo cáo (text trong JSON).
  2. Nối dòng. Vision hay dừng sớm vài chữ ở dòng chữ nhỏ; vùng chữ được nối dài theo mực chữ tới hết dòng.
  3. Đo cỡ từ điểm ảnh. Hộp chữ của Vision lệch 1–2 px ở chữ nhỏ, nên PixGamma đo độ trải dọc của mực chữ từng dòng ngay trên điểm ảnh.
  4. Dựng lại. Vùng chữ chạy lại bằng PixGamma Photo v1 (đã train cùng ô chữ), lấy trung bình 2 lượt (giữ nguyên và xoay 180°) để nét thẳng, rồi trộn mềm vào ảnh.
  5. Giữ màu chữ. Bước giữ màu gốc bỏ qua vùng chữ, nên chữ không bị phủ lại quầng nhoè từ ảnh nguồn.

Kết quả đo

Bộ chấm eval_text_pipeline.py dựng banner chữ Việt và Anh bằng nhiều font, thu nhỏ 4 lần rồi chạy cả quy trình; mỗi dòng được cắt riêng rồi đọc bằng OCR (Vision đọc một dòng khác đi tùy dòng bên cạnh, nên chấm cả banner sẽ nhiễu).

Cách dựng vùng chữ OCR đúng PSNR Độ nét
Không giữ chữ 90,3% 29,1 dB 0,47
Model Text v3 riêng (0.2.0) 89,2% 29,2 dB 0,58
PixGamma Photo v1, 2 lượt (0.2.1) 91,1% 30,5 dB 0,69

Trên ảnh bàn phím MacBook thật thu nhỏ 4 lần: PSNR cả ảnh tăng từ 23,8 lên 25,1 dB, quanh chữ Y từ 19,5 lên 21,9 dB.

Chữ quá nhỏ

Ở chữ hoa khoảng 3,6 px trong ảnh gốc, dấu thanh tiếng Việt chưa tới 1 điểm ảnh. Model cũ vẽ ra chữ sắc nhưng sai, nên bản 0.2.0 chuyển các dòng này sang bản phóng mềm. PixGamma Photo v1 đọc đúng hơn cả bản phóng mềm ở cỡ này (76,1% so với 72,3%), nên từ 0.2.1 bước làm mềm chỉ còn áp dụng khi dùng model chữ cũ.

PixGamma từng thử dựng lại chữ nhỏ bằng font theo cách đọc của Vision và chỉ nhận khi khớp điểm ảnh, nhưng bỏ vì cách đọc sai khớp ảnh gần bằng cách đọc đúng.

Giới hạn đã biết: chữ mà Vision không dò ra được (ví dụ chữ thân bài dưới khoảng 4 px trên tấm biển trong ảnh bị thu nhỏ mạnh) thì không được giữ, và model phóng nào cũng có thể vẽ thành nét giống chữ. Với ảnh như vậy nên phóng 2x thay vì 4x, hoặc dùng High Fidelity.

Tắt giữ chữ

Trong app tắt ở bảng tinh chỉnh; CLI dùng --no-text-protect; API dùng text=0. Biến PIXGAMMA_TEXT_TTA=1|2|4|8 chọn số lượt lật/xoay, PIXGAMMA_TEXT_MODEL chọn model khác cho vùng chữ (để chấm điểm).