GPT Image 2 và Nano Banana Pro: kiểm chứng từng ký tự chữ trên ảnh sản phẩm bằng API

Kết nhanh — Cùng một bộ prompt thương mại, cùng ngày 11.11.2026, mỗi prompt render đúng một lần: cả hai mô hình đều viết đúng 14/14 dòng chữ yêu cầu, không sai một ký tự. Khoảng cách thật sự nằm ở chỗ khác: tốc độ chậm hơn nhau khoảng 4 lần, định dạng trả về PNG và JPEG, hai kiểu hỏng khác nhau, và khả năng chỉnh sửa theo hai triết lý khác nhau. Chọn mô hình theo ràng buộc hệ thống, đừng chọn theo chuyện "ai viết đẹp hơn".
Vì sao chuyện sai một chữ lại nghiêm trọng
Khi ảnh sản phẩm được sinh ra bằng script, một dòng giá 49.99 bị vẽ thành 4.99 không phải là lỗi thẩm mỹ — nó là sự cố. Designer nhìn thấy sẽ sửa ngay, còn pipeline sinh hàng trăm ảnh mỗi ngày sẽ không thấy gì cả, và lỗi thế này thẳng tiến lên kệ hàng. Vì vậy thay vì soạn bài "mô hình nào vẽ đẹp hơn", tôi thiết kế một bài kiểm tra chỉ đo đúng một thứ: chuỗi ký tự trên ảnh có khớp tuyệt đối với yêu cầu hay không.
Hai mô hình và cách gọi
- GPT Image 2 (OpenAI, ra mắt 21.4.2026): render kèm bước suy luận trước khi vẽ, có các mức chất lượng, chỉnh sửa vùng bằng mask, nhận tới 16 ảnh tham chiếu. Nói chuyện theo giao thức OpenAI Images.
- Nano Banana Pro (Google, chính là Gemini 3 Pro Image; bản xem trước 20.11.2025, chính thức 28.5.2026): hướng tới tác vụ phức tạp, xuất được 2K/4K, nhận tối đa 14 ảnh tham chiếu, gắn watermark SynthID trên mọi đầu ra. Nói chuyện theo giao thức Gemini gốc, ảnh tham chiếu và yêu cầu chỉnh sửa đặt thẳng trong thân request.
Cả hai được gọi qua cùng một cổng của Crazyrouter, một tài khoản và một key, với hai mã mô hình gpt-image-2 và nano-banana-pro:
https://api.crazyrouter.com/v1
Trước khi chạy, tôi đã đối chiếu hai mã mô hình này trong danh mục mô hình công khai: cả hai đều có mặt, bên cạnh đó là các bản mới hơn (gpt-image-2.5-flare, gpt-image-2.5-sunburst, nano-banana-2.1) mà tôi cố ý không dùng để giữ phép so sánh đúng với hai mô hình đã công bố. Cấu hình chung cho bài test: ảnh vuông 1024px, GPT Image 2 để mức chất lượng trung bình, Nano Banana Pro để tỉ lệ 1:1. Mỗi tình huống là một brief ngắn kèm danh sách chuỗi bắt buộc phải xuất hiện đúng nguyên văn, và riêng tình huống hai có lệnh cấm rõ ràng: ngoài các từ trong danh sách, không được thêm chữ nào khác lên nhãn.
Ba tình huống, 14 chuỗi kiểm tra
Tình huống 1 — banner khuyến mãi. Hộp sạc tai nghe đen trên nền vệt sáng cam, năm dòng chữ: headline BLACK FRIDAY SALE, badge 50% OFF, giá mới $49.99 cạnh giá cũ $99.99 bị gạch ngang, dải ngày NOV 24 - NOV 30 ONLY ở đáy khung. Cả hai mô hình đúng cả năm, vệt gạch nằm đúng số cũ. Phong cách tách nhau rõ: GPT Image 2 nghiêng về typography dày, có kết cấu bề mặt; Nano Banana Pro mở nắp hộp và vẽ luôn tai nghe bên trong — trung thực với sản phẩm nhưng banner kém nổi bật hơn.


Tình huống 2 — nhãn chai nước sốt. Nhãn đỏ viền trắng trên bàn gỗ, chỉ được phép có ba dòng: thương hiệu FIRE DROP, tên vị SMOKY CHIPOTLE, dung tích NET 250ml in nhỏ. Mức "chỉ những từ này" là một detector rất tốt cho thói quen bịa chữ trang trí trên bao bì — cả hai đều giữ đúng danh sách. Cũng tại tình huống này, một request tới Nano Banana Pro đứt giữa chừng vì lỗi tầng kết nối (IncompleteRead); gọi lại là xong, nhưng bài học là phải tách biệt trạng thái "request hỏng" khỏi trạng thái "ảnh chưa tồn tại" trong code của bạn.


Tình huống 3 — thẻ thông tin cà phê lạnh. Sáu dòng chữ ở ba cỡ khác nhau, khó nhất là dòng spec nhỏ xíu ở đáy: NET WT 300ml / SERVINGS: 2. Cả hai viết đúng cả sáu, kể cả dòng nhỏ. Đổi lại, đây là tình huống nhiều khuyết điểm nhất: bản của Nano Banana Pro có các chấm nhiễu rải rác ở góc dưới phải và icon giọt nước bị vẽ lười chỉ còn hình mờ; bản của GPT Image 2 sạch lỗi nhưng dàn trang quá tham — headline chiếm nửa khung hình.


Bảng khác biệt kỹ thuật
| Tiêu chí | GPT Image 2 | Nano Banana Pro |
|---|---|---|
| Thời gian render có đo được | 75,5–124,6 giây | 18,4–21,0 giây |
| Định dạng trả về | PNG, khoảng 1,0–1,4 MB | JPEG, khoảng 0,4–0,6 MB |
| Chỉnh sửa cục bộ bằng mask | có | không (chỉnh bằng lệnh chữ, ảnh tham chiếu đưa vào parts) |
| Với tác vụ kéo dài | giữ kết nối, cần timeout trên 180 giây | có chế độ bất đồng bộ: asyncGenerateContent trả về ID tác vụ để poll |
Gợi ý tích hợp
- Sinh lượng lớn bản nháp, cần quay vòng nhanh và tiết kiệm băng thông: Nano Banana Pro, kèm retry và theo dõi trạng thái cho từng request.
- Ảnh hoàn thiện, typography đậm, cần nền trong suốt hoặc sửa đúng một vùng: GPT Image 2, với timeout đặt thoáng cho mức hai phút một ảnh.
- Kết hợp cả hai là cách tôi sẽ dựng: nháp bằng mô hình nhanh, ảnh được chọn đưa sang mô hình chậm để tinh chỉnh — việc chuyển đổi chỉ là đổi cấu hình.
Về xử lý lỗi, nên chia làm hai loại trong job sinh ảnh: lỗi kết nối thì retry có ý nghĩa; còn lỗi bị từ chối phía mô hình thì retry chỉ đốt hạn mức gọi vô ích. Hai loại này cần hai nhánh xử lý khác nhau. Trước khi dựng pipeline, nên xem lại mã mô hình và hạn mức hiện hành trên cùng một trang danh mục — đây là bước tôi làm mỗi lần đổi mô hình, vì ID có thể đổi mà log lỗi thì không nói vì sao.
Phạm vi của kết luận
Một ngày kiểm tra, chữ tiếng Anh, mỗi prompt render một lần, đúng một khổ ảnh. Chữ tiếng Việt, cỡ chữ siêu nhỏ, chỉnh sửa theo ảnh tham chiếu và xuất 2K/4K chưa nằm trong phạm vi — đừng tự động áp kết quả 14/14 cho những tình huống chưa được đo.
All rights reserved