Trích Xuất Ảnh Từ PDF
Công cụ trích xuất tất cả hình ảnh từ tệp PDF. Chọn xuất PNG, JPEG hoặc WebP, lọc theo kích thước tối thiểu, loại trùng lặp, tải ZIP. Không tải lên.
Giới Thiệu Trích Xuất Ảnh Từ PDF
Trích Xuất Ảnh Từ PDF là công cụ chạy hoàn toàn trên trình duyệt, lấy mọi ảnh raster nhúng trong tài liệu PDF và cho phép bạn lưu từng ảnh riêng lẻ hoặc gom thành một tệp ZIP. Bộ trích xuất dùng PDF.js của Mozilla để phân tích từng trang, duyệt danh sách thao tác của trang để tìm các lệnh paintImageXObject và paintJpegXObject, giải quyết các tham chiếu ấy trong kho đối tượng của trang, rồi dựng lại từng ảnh trên một canvas HTML ở định dạng PNG, JPEG hoặc WebP tùy bạn chọn. Vì toàn bộ luồng xử lý chạy cục bộ trong tab trình duyệt, các PDF nhạy cảm (hợp đồng, ảnh CCCD đã quét, báo cáo nội bộ, hồ sơ y tế) không bao giờ rời khỏi thiết bị, không có thao tác tải lên và không có máy chủ nào lưu tệp của bạn. Thanh trượt kích thước tối thiểu cho phép bỏ qua các biểu tượng nhỏ và tiêu đề trang trí; công tắc loại trùng lặp băm mỗi ảnh bằng SHA-256 để logo lặp lại trên mọi trang chỉ được lưu một lần. Định dạng xuất là cân bằng giữa chất lượng và dung lượng: PNG giữ độ trong suốt và chất lượng không mất dữ liệu (tốt cho ảnh chụp màn hình, sơ đồ, nét vẽ); JPEG cho tệp nhỏ hơn 2-5 lần đối với ảnh nhưng mất một phần chất lượng; WebP thường vượt cả hai nhờ codec hiện đại. Đa số người dùng nhận được trích xuất sạch, độ phân giải gốc; chỉ trường hợp không trích xuất được là khi ảnh trong PDF được mã hóa bằng JBIG2 hoặc bộ lọc luồng độc quyền, khá hiếm trong tài liệu thường ngày.
Công cụ này tìm ảnh trong PDF bằng cách nào?
PDF lưu ảnh dưới dạng các luồng XObject được tham chiếu từ luồng nội dung của mỗi trang. Chúng tôi dùng PDF.js phân tích tài liệu và gọi page.getOperatorList() để có chuỗi lệnh vẽ. Tiếp đó quét danh sách này tìm các opcode paintImageXObject, paintImageXObjectRepeat, paintJpegXObject và paintInlineImageXObject; mỗi opcode mang tên của một đối tượng ảnh. Sau đó tra cứu tên ấy trong page.objs để nhận về một ImageBitmap đã giải mã hoặc một buffer pixel thô kèm thẻ không gian màu. Buffer pixel được vẽ lên canvas HTML ở độ phân giải gốc và xuất qua canvas.toBlob() ra PNG, JPEG hoặc WebP. Cách này bắt được mọi ảnh inline và XObject chuẩn mà PDF dùng; không bắt được đồ họa vector vẽ bằng toán tử path vì đó không phải ảnh raster.
Ảnh trích xuất có ở độ phân giải gốc đầy đủ không?
Có. Chúng tôi giải mã mỗi ảnh ở kích thước pixel gốc nhúng trong PDF, không phải kích thước hiển thị trên trang. Vì vậy ảnh 3000x2000 chèn vào một phần tư khổ A4 vẫn được trích xuất nguyên 3000x2000. Nếu JPEG đã được nén chất lượng 70 khi lưu trong PDF, bạn không thể phục hồi chi tiết đã mất, nhưng bạn nhận chính xác các byte mà PDF mang theo. Với PDF lưu cùng một ảnh ở nhiều độ phân giải (cho thumbnail và toàn trang), công cụ trích mọi biến thể nên bạn có thể thấy hai hoặc ba bản gần như trùng; công tắc loại trùng có thể dồn chúng theo SHA-256 nếu chúng giống nhau từng byte, nhưng không gộp nếu khác độ phân giải.
Vì sao công cụ bỏ qua một số ảnh và kích thước tối thiểu hoạt động ra sao?
Thanh trượt kích thước tối thiểu cho phép bỏ qua các ảnh raster có chiều rộng hoặc chiều cao nhỏ hơn ngưỡng (mặc định 32 pixel). Điều này hữu ích vì PDF đầy ảnh trang trí nhỏ: dấu đầu dòng, viền trang, raster phông chữ con, watermark. Đặt ngưỡng 100 hoặc 200 thường lọc hết những thứ không phải ảnh thật, sơ đồ, biểu đồ hay trang quét. Đặt 0 nếu bạn muốn mọi ảnh kể cả các pixel giãn cách vô hình và pixel 1x1 chống răng cưa. Kiểm tra kích thước dùng số đo gốc của ảnh, không phải kích thước hiển thị, nên logo nhúng 400x400 vẫn lọt qua dù hiển thị nhỏ ở góc trang.

Có dùng được với PDF bị mã hóa hoặc có mật khẩu không?
Với PDF có mật khẩu chủ sở hữu (hạn chế chỉnh sửa nhưng vẫn cho xem), có — PDF.js mở trong suốt. Với PDF có mật khẩu người dùng yêu cầu mật khẩu để xem, tài liệu sẽ phân tích thất bại và bạn sẽ thấy lỗi; trước tiên hãy mở khóa PDF bằng công cụ Mở Khóa PDF của WuTools với mật khẩu đúng. Nhiều PDF quét không thực sự là ảnh mỗi trang mà chứa XObject raster thật có thể trích xuất; ngược lại, PDF có ảnh quét mã hóa JBIG2 (phổ biến trong lưu trữ nén) có thể hiển thị đúng trong trình xem nhưng PDF.js không phải lúc nào cũng giải mã JBIG2 thành buffer pixel, lúc đó các ảnh ấy sẽ bị bỏ sót. Tài liệu hiện đại từ Word, LibreOffice, InDesign, in-PDF trình duyệt và đa số ứng dụng quét đều dùng định dạng chúng tôi xử lý đầy đủ.
PDF của tôi có bị tải lên máy chủ không?
Không. PDF được đọc vào ArrayBuffer JavaScript trong tab trình duyệt và phân tích hoàn toàn ở phía máy khách bằng PDF.js. Giải mã ảnh, xuất canvas, băm để loại trùng và đóng gói ZIP đều chạy trên CPU của bạn. Lưu lượng mạng duy nhất là tải thư viện PDF.js và tệp worker từ CDN công cộng ở lần truy cập đầu (sau đó được cache). Bạn có thể tự kiểm tra bằng cách xem tab Network trong DevTools trước khi bấm Trích Xuất: không có yêu cầu tải lên nào được thực hiện. Điều này khiến công cụ an toàn cho PDF bảo mật (báo cáo tài chính, NDA, hợp đồng pháp lý, hồ sơ y tế, slide nội bộ) khi việc tải lên một SaaS bên thứ ba là không chấp nhận được.
Kích thước PDF tối đa có thể xử lý là bao nhiêu?
Trên thực tế, bạn có thể trích từ PDF lên đến khoảng 200 MB trên một máy bàn hiện đại có 8 GB RAM, và lên đến 50 MB trên hầu hết điện thoại. Nút thắt là bộ nhớ trình duyệt chứ không phải ổ đĩa: PDF.js cần giữ tài liệu đã phân tích cộng với buffer pixel của ảnh đã giải mã khi xử lý từng trang. Nếu PDF rất lớn (ví dụ kho ảnh 1 GB), hãy chia trước bằng công cụ Tách PDF, chạy trích xuất trên từng phần rồi gộp các tệp ZIP kết quả lại. Công cụ xử lý các trang lần lượt theo thứ tự và giải phóng bộ nhớ của trang sau khi xong, nên đỉnh bộ nhớ tương ứng với ảnh lớn nhất chứ không với toàn bộ tài liệu.
