見積書や請求書を誰かに見せる前に、会社名や住所、電話番号などを黒く塗る。
一見すると、それで隠せたように見えます。
今回、シークレイヤー(SECLAYER)を作っていて、自分の中ではここがかなり気になるようになりました。
「ペンツールで個人情報を塗っただけでは、全く隠せてないことをみんなに知ってほしい。」
そこでSECLAYERでは、見た目だけを覆うことより、元の情報そのものを取り除くことを優先しています。
■ 見せたくない情報だけを処理する
SECLAYERは、見積書・請求書などのPDFから、会社名、住所、電話番号、宛名、登録番号、振込先情報などをまとめて隠すためのツールです。
複数PDFをまとめて投入し、できるだけ少ない操作で一括処理できる構成にしています。
実際の確認では、作業内容、数量、単位、単価、金額、合計などは残しながら、見せたくない情報を隠す処理を確認しました。
■ 黒塗りの中に元情報を残したくない
今回重視したのは、単純に黒い四角を上から重ねることではありません。
処理後のPDFでは、隠した文字情報が通常の文字抽出で取得できないことを確認しています。
見た目を黒くする前に、元の情報を取り除く方向で作っています。
■ 今度は黒塗りの形が気になった
処理を繰り返すと、別の問題も出ました。
文字ごとに黒くすると、短い黒塗りと長い黒塗りが並び、形がガタガタに見えることがあります。
小さな不要な黒塗りが発生したこともありました。
そこで、同じ項目の周辺はできるだけまとまりとして扱う方向へ変更しています。
■ 黒くしない方法も追加した
元の情報を取り除いているなら、そのあと必ず黒くする必要はない。
そう考えて、背景になじませる「自然消去」も追加しました。
実際に黒塗りと自然消去の両方を出力しています。
■ 自然消去には罫線の問題があった
表の中の文字を自然に消そうとすると、罫線まで一緒に消えることがあります。
線を描き直しても、周囲と太さが違えば不自然に見えます。
そこで「住所」などの項目名を残して値だけを消し、罫線をできるだけ維持する方向で調整しています。
■ 印影は別の扱いになることもある
印影が文字ではなく画像として保存されている場合もありました。
その場合は文字とは別の処理が必要になります。
画像として保存された文字や印影についても、元情報が残らない処理を確認しながら対応範囲を広げていきます。
■ シンプルな操作は崩したくない
中の処理は増えていますが、操作画面には細かな設定を増やしすぎないようにしています。
PDFを選択またはドラッグし、隠し方を選び、一括処理する。
基本はこの形です。
ただ隠すだけではなく、元の情報をきちんと消したうえで、見た目まで自然にできるところまで持っていきたいと思っています。