承續先前說的 [設計模式] 淺談圖片進行個資遮蔽
圖片遮蔽的功能的完成後, 就能考量到多頁PDF的處理
先列出SA規格:
- 如果未選擇偵測項目, 自動偵測台灣常用個資項目
- 上行傳入PDF(內含文字或圖片), 下行回傳已遮蔽JPEG格式圖片組合的PDF, 長寬不變
- 可選擇遮蔽顏色、回傳圖片壓縮率、是否二次遮蔽
依以上需求再進一步分析拆解出SD規格…
首先, 要先把PDF轉image:選用PDFtoImage可以轉成SkiaSharp可處理格式, 一般都用150~300的DPI轉換, 畫面會比較清楚
將每頁image轉jpeg / png 進行壓縮(自行考量效能和效果決定壓多少) , 丟OCR, 用StringBuilder收集OCR回覆的整頁字串,
並記下每頁累積字數, 完整結果也要保留用來畫遮蔽用
將收集的OCR字串丟長文本PII分析, 收到的PII結果所標的index是全PDF文字的位置,
前文作圖片遮蔽時, 已經有寫了找出要遮蔽的圖上座標,
只要再加入每頁累積字數陣列, 重算PII的index扣除前頁字數, 就能把每個PII座標都正確找出來,
二次遮蔽也可直接呼叫先前長文本已作好的功能,
在收集好每頁所有要遮蔽的座標後, 可以迴圈對每頁畫上座標, 同時轉入新PDF:
- 畫上本頁座標
- 本頁image的長寬*72f / DPI 即為原PDF長寬
- 將畫好並已壓縮的圖以原長寬再放入新PDF
Taiwan is a country. 臺灣是我的國家