Chuyển PDF sang ảnh: chọn DPI đúng (và khi 300 là thừa)

Một trang PDF thành bao nhiêu điểm ảnh ở 96, 150, 300 và 600 DPI, điều đó ảnh hưởng dung lượng và bộ nhớ ra sao, và DPI nào hợp với màn hình, OCR, in ấn.

Trong bài này

"Xuất 300 DPI" là lời khuyên người ta đưa ra cho mọi lần chuyển PDF sang ảnh, và nó thường sai. Trang PDF vốn không có điểm ảnh nào, nên DPI bạn chọn quyết định nó có bao nhiêu điểm ảnh, và mỗi bậc tăng lên đều nhân chi phí. Bài này giải thích con số đó nghĩa là gì, nó làm gì với một trang A4, và cách chọn DPI thấp nhất mà vẫn đủ dùng. Mọi kích thước dưới đây được tính bằng chính đoạn mã tính kích thước của công cụ chuyển PDF sang ảnh.

Trang PDF đo bằng point, không phải điểm ảnh

Bên trong PDF, vị trí và kích thước tính bằng point: 72 point một inch. Trang A4 là 595,28 × 841,89 point (210 × 297 mm); khổ Letter của Mỹ là 612 × 792. Chữ và hình vẽ vector được lưu dưới dạng hình học chứ không phải chấm, nên phóng PDF lên 800% chữ vẫn sắc.

Để tạo ảnh, bộ vẽ phải quyết định mỗi inch có bao nhiêu điểm ảnh. Đó là DPI (đúng ra là PPI, điểm ảnh mỗi inch, nhưng ai cũng gọi là DPI). Kích thước ảnh suy ra trực tiếp:

số điểm ảnh = số point × DPI ÷ 72

Với trang A4:

DPIKích thước ảnh (px)MegapixelBộ nhớ khi vẽ
72595 × 8420,502,0 MB
96794 × 11230,893,6 MB
1501240 × 17542,178,7 MB
2001654 × 23393,8715,5 MB
3002480 × 35088,7034,8 MB
6004961 × 701634,81139,2 MB

Cột bộ nhớ là tấm canvas để vẽ trang: 4 byte mỗi điểm ảnh (đỏ, xanh lá, xanh dương, độ trong suốt). Quy luật quan trọng nằm ở cột megapixel: gấp đôi DPI thì số điểm ảnh gấp bốn. 300 DPI nhiều gấp bốn lần 150 DPI, còn 600 DPI gấp mười sáu lần.

Dung lượng tệp thay đổi thế nào

Dung lượng không tăng nhanh bằng số điểm ảnh, vì các định dạng ảnh nén vùng trắng rất tốt. Để có số thật, tôi vẽ một trang A4 toàn chữ cỡ 10 bằng pdf.js và mã hóa bằng bộ mã hóa Skia (qua @napi-rs/canvas trong Node.js; trình duyệt dùng bộ mã hóa khác nên con số của bạn sẽ hơi khác, nhưng xu hướng thì giống):

  • 150 DPI: PNG 617 KB, JPG (chất lượng 90) 573 KB, WebP (chất lượng 90) 343 KB
  • 300 DPI: PNG 1,33 MB, JPG 1,47 MB, WebP 800 KB
  • 600 DPI: PNG 2,68 MB, JPG 3,59 MB, WebP 1,60 MB

Với trang chữ này, mỗi lần gấp đôi DPI thì tệp lớn lên khoảng gấp đôi, trong khi số điểm ảnh gấp bốn. Trang toàn ảnh chụp thì khác: chỗ nào cũng có chi tiết nên dung lượng tăng gần bằng số điểm ảnh. Để ý rằng ở 300 DPI, JPG không nhỏ hơn PNG với trang chữ. JPG sinh ra cho ảnh chụp; với chữ đen trên nền trắng nó tốn byte cho các gợn quanh mép từng chữ.

Trên điện thoại, con số bộ nhớ quan trọng hơn dung lượng. Một trang A4 ở 600 DPI cần canvas 139 MB, và trình duyệt di động giới hạn canvas thấp hơn nhiều so với máy tính. Vì vậy công cụ giữ mỗi ảnh dưới 25 megapixel và vẽ trang lớn hơn ở DPI cao nhất còn vừa, đồng thời báo trước khi bắt đầu.

Chọn DPI theo nơi ảnh sẽ dùng

Xem trên màn hình. Điều quan trọng là ảnh sẽ chiếm bao nhiêu điểm ảnh thật trên màn hình. Một điện thoại rộng 390 điểm CSS với tỉ lệ điểm ảnh 3 có 1170 điểm ảnh vật lý theo chiều ngang. Trang A4 hiện hết chiều ngang cần khoảng 1170 điểm ảnh: 150 DPI (1240 px) là đủ, 300 DPI là thừa, 96 DPI (794 px) trông hơi nhòe. Trên laptop hiển thị trang rộng 1000 điểm CSS với màn hình 2×, bạn cần 2000 điểm ảnh, tức khoảng 240 DPI. Với slide, tin nhắn Zalo và email, 150 DPI là mặc định hợp lý.

Nhận dạng chữ (OCR). Phần mềm OCR quan tâm chữ cao bao nhiêu điểm ảnh. Hướng dẫn cải thiện chất lượng của chính Tesseract nói nó "hoạt động tốt nhất với ảnh có độ phân giải ít nhất 300 dpi". Tính ra điểm ảnh, chữ 10 pt ở 300 DPI có cỡ khoảng 42 px; ở 150 DPI chỉ còn một nửa. Để OCR, hãy xuất ở 300 DPI, và không dưới 200 với chữ thường.

In ấn. Ở đây 300 DPI thật sự có lý, vì bạn in ảnh đúng kích thước trang và 300 điểm ảnh mỗi inch xấp xỉ mức mắt phân biệt được ở khoảng cách đọc. Trang A4 ở 300 DPI in ra khổ A4 không thấy điểm ảnh. In nhỏ hơn A4 thì DPI thực tế còn cao hơn, chẳng được thêm gì.

Ảnh thu nhỏ, xem trước. 72 hay thậm chí 36 DPI. Một bảng xem trước 40 trang ở 300 DPI là 348 megapixel cho những ảnh chỉ hiện rộng 200 điểm.

Khi DPI cao không thêm được gì

Rất nhiều PDF là bản scan: mỗi trang là một tấm ảnh chụp giấy nằm trong PDF với độ phân giải của máy scan, thường 200 hoặc 300 DPI. Vẽ trang đó ở 600 DPI không làm hiện thêm chi tiết; bộ vẽ chỉ kéo giãn tấm ảnh có sẵn, và bạn nhận tệp lớn gấp bốn trông y hệt, hoặc nhòe hơn chút. Muốn giữ đúng điểm ảnh gốc của bản scan, hãy vẽ ở đúng DPI của máy scan (lệnh pdfimages -list của Poppler cho biết độ phân giải từng ảnh, nếu máy bạn có cài).

Biểu đồ được dán vào tài liệu dưới dạng ảnh chụp màn hình độ phân giải thấp cũng vậy. Chữ vector xung quanh sẽ nét hơn khi tăng DPI; ảnh chụp màn hình thì không.

Những lỗi hay gặp

  • Dùng 300 DPI cho mọi thứ. Tốn gấp bốn lần điểm ảnh so với 150 DPI mà khi xem trên màn hình không thấy khác.
  • Chọn JPG cho trang chữ. JPG ổn với bản scan và ảnh chụp. Với văn bản đánh máy, PNG cho mép chữ sắc và thường không lớn hơn; WebP thường nhỏ nhất.
  • Mong chữ trong ảnh bôi đen được. Ảnh chỉ là điểm ảnh. Giữ lại tệp PDF nếu ai đó cần tìm kiếm hay sao chép chữ.
  • Quên nền trong suốt. Phần lớn PDF không có trang trắng thật, chỉ có chữ trên nền rỗng; trình xem tự tô trắng phía sau. Nếu đặt ảnh lên slide có màu, hãy chọn PNG nền trong suốt, hoặc chủ động giữ nền trắng.
  • Thu nhỏ sau khi xuất. Xuất 300 DPI rồi thu còn một nửa trong phần mềm sửa ảnh cho kết quả kém hơn xuất thẳng 150 DPI, lại mất thời gian hơn.

Công thức nhanh

  1. Mở PDF trong công cụ chuyển PDF sang ảnh; nó cho biết kích thước trang đầu theo milimét và inch.
  2. Chọn 150 DPI cho màn hình, 200 đến 300 cho OCR, 300 để in.
  3. PNG cho trang đánh máy, JPG cho ảnh chụp và bản scan, WebP cho web.
  4. Chỉ chuyển những trang cần (1-3, 7), rồi tải tệp ZIP.

Nếu cần chiều ngược lại, ghép ảnh thành một PDF, hoặc gộp, tách, xoay tệp gốc trước, hãy dùng bộ công cụ PDF, cũng chạy ngay trên thiết bị. Còn nếu ảnh xuất ra lớn hơn mong muốn, bộ công cụ ảnh có thể thu nhỏ và nén lại hàng loạt.

Công cụ được nhắc trong bài

Về trang blog