66d4fef045
leo 07-27 定的形狀:「本地任何檔案都透過一個機制把它轉成模型可讀,再把模型可讀 內容發給它」「能不能讀 PDF 根本不是 Arcrun 的工作」。 convert.go=調度層(工頭):認副檔名→派抽取器→統一吐純文字。 加新格式只要在 extractors 註冊一行,不動架構。 convert_docx.go=第一個抽取器,純標準庫 archive/zip+encoding/xml。 三個設計決定(都有理由,非隨手): ① ErrNoText 獨立錯誤——掃描件 PDF 抽不出字時絕不能靜默略過(leo 撞過的病), 要能轉成使用者看得懂的訊息;與 ErrUnsupported 分開因為說法不同。 ② NFKC 正規化——PDF 抽中文會出康熙部首變體,長得一樣但碼位不同=用戶搜不到 自己的檔案。廉價保險,對其他來源同樣有效。 ③ 只取 word/document.xml——頁首頁尾多是雜訊(頁碼/公司名),知識萃取不要。 測試 10/10 + 真 Word 檔實測: textutil 產生的 real.docx → 抽出「船舶維修合約/350,000/2026 年 8 月 15 日」全對 同段落多 run 相連(Word 常把一句話切成多個 w:r) 壞檔(舊版 .doc 改名)報錯且不歸類成 ErrNoText NFKC 康熙部首摺回正常字 註:全形「,」會被 NFKC 轉半形「,」=正常行為,對搜尋無害(反而統一)。 下一步:接 PDFium-via-wazero(+10.43MB)。未接進 extract_gemma 主流程。
6 lines
86 B
Modula-2
6 lines
86 B
Modula-2
module arcrun-rag/collector
|
|
|
|
go 1.25.0
|
|
|
|
require golang.org/x/text v0.40.0 // indirect
|