掃描書籍轉數位PDF
對話應保持簡單
使用者只需說:「Tolong jadikan PDF buku ini buku digital yang nyaman dibaca, mengikuti https://github.com/MuhtajinMukhtar/scan-book-to-digital-pdf。」他們可以附上PDF檔案。不需要求他們知道OCR、PP-StructureV3、SHA-256或命令列等詞彙。
- 若未附上PDF,請要求提供PDF。
- 預設採用忠實的版面、接近來源的字型與段落起始。必要時,一次只問一個友善的問題,並以日常用語表達:「想要像一般書的字體還是現代風格?」、「字型大小跟原本一樣或更大?」、「段落開頭要縮排還是靠左?」。提供「保留原本樣式」的選項。當預設值足夠時,不要問所有問題。
- 以白話回報進度:已檢查頁數、不確定的頁面、審閱PDF。將技術日誌保留在工作檔案中,不要出現在使用者的聊天室。
- 不要讓使用者手動選擇OCR引擎。在相容的Mac上,必須同時使用以下兩個引擎。
來源保護與偏好設定
記錄頁數、原始SHA-256、檔案中繼資料與輸出目的地。絕不覆寫原始檔案或已核准的先前版本。預設為精確的來源頁面對應,除非使用者明確要求重新分頁。尊重明確偏好:正文襯線字型(若已安裝且有授權則使用Georgia,否則使用開源襯線字型)或無襯線字型;來源估算或指定的字型大小;首行縮排(來源/是/否)。保留來源標題、斜體、照片、圖表、表格、標誌、引用、表單、頁尾與閱讀順序。絕不重新分發有版權的掃描檔案或字型檔案。
Mac優先的雙OCR管道(必須完整執行)
- 使用
references/mac-setup.md設定隔離的Mac Python環境。在處理前驗證真實的Apple Vision與PaddleOCR PP-StructureV3安裝。不要使用生產系統或全域套件變更。 - 執行
python scripts/mac_hybrid_ocr.py BOOK.pdf --work-dir ./work。這會先以Apple Vision呼叫scripts/ocr_book.py,然後對相同的快取頁面圖片執行PP-StructureV3,儲存原始的Paddle JSON與Markdown,並在work/fusion/產生每頁比對報告。 - 從Paddle JSON讀取原始
overall_ocr_res.rec_texts,而不僅是其Markdown渲染。成功的原型在五頁測試中恢復了Paddle Markdown遺漏的七行文字;絕不假設Markdown是完整的。檢查paddle_raw_not_in_markdown、paddle_not_in_apple、apple_not_in_paddle,以及拼寫/措辭變體警告。這些都是審查候選項目,而非自動核准的修正。 - 在套用修正前,針對原始頁面圖片確認遺漏文字與爭議名稱。逐行比較兩個引擎;沒有任何引擎本身是權威。將不確定性記錄在頁面專屬的問題清單中。不要僅根據上下文憑空發明文字。
- 分類每頁,並從已驗證的閱讀順序,使用選定的大小、字型、段落縮排與左右對齊來撰寫數位排版文字。使用原始裁切的照片/插圖。參見
references/page-archetypes.md。對於無法安全重建的頁面,保留來源圖片並附上可選取的OCR圖層,並明確標記該頁為可搜尋掃描的後備方案。 - 為每個原始頁面撰寫一個清單項目:來源/輸出頁碼、類型、OCR引擎、接受的修正、圖片檢查、數位或可搜尋掃描狀態、例外狀況與視覺審查狀態。
- 使用
scripts/pdf_audit.py驗證來源詞彙覆蓋率、頁面對應、內嵌字型、無空白/裁切頁面與圖片,以及來源/輸出視覺比對。閱讀references/qa-and-handoff.md。不要壓制失敗來回報成功。 - 提供審閱PDF與簡潔的待處理頁面摘要。僅在使用者接受編輯結果後才標記為最終版本。僅在副本上執行
scripts/lossless_optimize.py,並驗證渲染/文字一致性。
操作邊界
- 這不是一鍵通用的重新排版工具:AI代理必須對複雜頁面進行編輯重建。
mac_hybrid_ocr.py準備來源比對,但它本身不會產生最終書籍。 - 若Paddle無法在Mac上執行,不要靜默地只使用Apple並假裝輸出通過了雙OCR;請報告安裝問題,並提供使用者安全的下一步。
- 若目前的ChatGPT Work或Codex環境無法執行Mac軟體,請簡短說明。應取得允許的Mac執行環境,而非偽造OCR輸出。
- 保留快取/來源識別性。絕不自動覆寫來自其他來源的現有OCR結果。不要在儲存庫中發布私人檔案。
- 使用
--compare-only重新評估現有快取,而不重新執行OCR。