😫 Vấn đề (The Pain Point)
Khi dùng máy scan tài liệu (ADF) chế độ 2 mặt, nếu tờ giấy chỉ có mặt trước, mặt sau sẽ ra một trang trắng. File kết quả 50 trang thì có 25 trang trắng xen kẽ. Xóa tay từng trang rất cực.
🚀 Giải pháp Agentic (The Solution)
Tool phân tích từng trang, nếu thấy “trang này quá ít nội dung mực in”, tool sẽ coi là trang trắng và xóa đi.
Tính năng:
- Sensitivity: Chỉnh độ nhạy (vì trang trắng đôi khi vẫn có vài chấm đen do bụi máy scan).
- Auto Clean: Xử lý file PDF sạch sẽ trong vài giây.
🤖 Engineering Prompt (Copy & Paste)
**Role:** Python Document Developer
**Task:** Create a "Blank Page Remover for PDF".
**Requirements:**
1. **Tech Stack:** Python, `tkinter`, `pypdf`.
2. **Logic Strategy:** *Detecting visually blank pages in PDF is tricky without rendering.*
* *Approach A (Text):* Extract text. If text length < threshold, delete.
* *Approach B (Visual - Better):* Convert page to image (low res thumb), calculate mean brightness or color variance. White page = high brightness, low variance.
* *Selected Approach:* Let's use **Approach A (Text)** first for speed, maybe add a simple visual check if libraries permit (requires pdf2image). Let's stick to Text-based extraction + Content stream byte size check for simplicity and dependency reduction.
3. **GUI:**
* Select PDF.
* "Content Threshold" slider (default low).
* "Process" button.
4. **Logic:**
* Iterate pages.
* `page.extract_text()`.
* If `len(text.strip()) == 0` (or < threshold), exclude from output writer.
* Save new PDF.
5. **Deliverables:**
* `remove_blank.py`
* `run.bat`
* `requirements.txt`
**Context:** Cleaning up scanned documents.
🧠 Giải mã Prompt
- Text vs Visual: Prompt phân tích 2 cách làm. Cách dựa vào Text đơn giản hơn (không cần cài Poppler) nhưng có thể sót nếu trang trắng là ảnh scan không có text (image-only pdf). Ở mức độ Beginner, chúng ta ưu tiên cách Text/Byte size để dễ cài đặt Tool.
🛠️ Hướng dẫn
- Copy Prompt -> Paste -> Chạy.
- Chọn PDF -> Process.