# VA mints 要件定義書

本書は、「VA mints企画書（背景・方針）」及び「mints提出ファイル制約調査報告書（改訂版・全形式対応）」を踏まえ、ツールの機能要件・処理仕様を定義するものである。制約の根拠（条文・マニュアル頁等）は制約調査報告書に譲り、本書では実装すべき処理内容を規定することに専念する。

---

## 改訂履歴（実装済み機能への影響を含む）

**開発着手後にドキュメントの内容が変更された場合、この節に記録する。Claude Codeは新しいセッションでこの節を必ず確認し、既に実装済みの機能に影響がないか照合すること。**

**【正味の差分（要点）】** 下表は検討過程の記録であり、簡素化とその撤回という2段階の変遷を含むが、**議論の途中経過について実装側に個別の指示を出していない場合、実装済みコード（当初のビンパッキング＋提出用サブフォルダ生成方式）と現在の仕様との間に、その部分に関する実質的な差分はない**。現在の仕様で新たに追加されているのは、**「単体ファイル200MB超過の検出・警告」機能のみ**である（4.5節参照）。したがって、その場合の対応は「既存の200MB分割機能の仕様確認」と「単体ファイル超過検出の新規実装」の2点で足りる。

| 日付 | 変更内容 | 実装への影響 |
|---|---|---|
| （実装着手時点で4.5節「200MB分割」まで実装済みの状態から本日改訂） | 4.5節「200MB分割（複数回提出の仕分け・通知）」を全面簡素化。従来のビンパッキングによる「提出用_01」「提出用_02」等のサブフォルダ自動生成を撤回し、合計サイズの算出と簡潔な通知のみに変更した（理由：mints自身のアップロード画面が、追加ボタン押下時に累積サイズを対話的にチェックし、超過分をその場でブロックする仕組みであることが判明したため。第8章・報告書第8章確定事項5参照）。また、新たに「単体ファイル200MB超過の検出・警告」機能を追加した。 | **【要リファクタリング・その後さらに変更あり。下記2行目を参照】** |
| （同日、上記の直後に再改訂） | **上記の簡素化を撤回し、ビンパッキング＋提出用サブフォルダの自動生成を復活させた。** 理由：mintsの対話的チェックは容量超過を防ぐ安全性は確保するが、ユーザーが追加操作の途中でブロックされた際に「今のリストのまま提出するか、入れ替えるか」を即興的に判断し、次回提出時にどのファイルが未提出かを人力で管理しなければならないという、ヒューマンエラー（提出漏れ）のリスクを伴う実務上の手間を見落としていたため。**根拠が変わった点に注意：以前は「mintsに拒否されないため」という理由で仕分けを設計し、その後「mintsが対話的に処理するため不要」と撤回し、今回「ユーザーの手作業によるミス防止のため」という別の理由で復活させた。** | **【上記「正味の差分」参照。単体ファイル超過検出の新規実装が主な対応事項】** |
| （4.7実装後の改訂） | 書き出し時の確認UIを、処理の種類ごとの一括確認ダイアログ（ファイル名整形／メタデータ除去／証拠番号スタンプをそれぞれ対象ファイル一覧ごと一括で実行・スキップ）から、**書き出し対象を1件（又は1枝番ファイル結合グループ）ずつ処理する逐次レビュー画面**に変更した。各回、対象のプレビュー・適用する処理を選ぶチェックボックス（既定値つき、手動変更可）を表示し、確定した内容を即座に書き出す。理由：①証拠番号スタンプを付けるかどうかの判断には、原本に既に証拠番号が記載されていないか（重複スタンプ）を目視確認する必要がある、②mints導入前の紙媒体実務にあった赤枠・赤字慣行に相当する見た目（黒字／赤字／赤字＋赤枠）を選べるようにする必要がある（一次資料に色・枠の規定はなく、公式規定のない事項として設定ファイルでオプション化。実行中の切替は不要）。枝番ファイル結合のみ複数ファイルにまたがる決定のため、候補一覧をグループ単位のチェックボックスで確認する別画面のまま残す。詳細は第4章冒頭・4.7節参照。 | **【要実装】confirmation.py（一括確認ダイアログ）を廃止し、review_logic.py・write_review_dialog.py・checklist_dialog.py・preview.py・evidence_stamp.pyのスタンプ色オプションを新設** |
| 2026-07-20 | **【重要：設計方針の転換】競合ツールとの機能ギャップ分析を踏まえ、設計思想を確定した：「頻繁に処理が必要なものだけを実装し、それ以外はチェック（検出・警告）に徹する。修正はユーザーが他のアプリで行い、本ツールに再度読み込んで再検証する」。本ツールの価値は変換・修復エンジンの多機能さではなく、検証の網羅性とフォルダ単位バッチ処理にある。これに伴い、**v1／v2という段階分けの概念を撤廃**し、第8章「v2以降に保留する機能」に列挙されていた全項目（4.4形式変換機能全体、OCR付与・テキストレイヤー削除、墨消し完全性の「防止処理」の実行、用紙サイズ補正の「実行」、無彩色検出とグレースケール変換、ファイル分割・圧縮）を**保留ではなく廃止**（今後も実装しない）と確定した。各該当箇所の検証（検出・警告）機能自体はそのまま維持する。あわせて新規に5機能を追加する：①証拠番号スタンプの位置調整UI（4.7節）、②証拠番号スタンプがテキストレイヤー・画質を損なわないオーバーレイ合成方式であることの明確化（4.7節。実装は既存のまま）、③操作制限（印刷・コピー制限）PDFの検出（4.6節・新規のチェック機能）、④号証の連番・欠番チェック（4.9節・新規のチェック機能）、⑤個人情報パターンの検出（4.9節・新規のチェック機能）。詳細は第8章「実装範囲の確定（チェック専念方針）」参照。 | **【要実装】廃止対象はいずれも元々コード未着手のため削除作業は発生しない。新規5機能のうち②は既存実装（evidence_stamp.pyのオーバーレイ合成方式）が既に要件を満たすためコード変更不要。①③④⑤は新規実装が必要（詳細は各節参照）** |
| 2026-07-21 | **ツール名を「VA_MINTS」に統一。** 開発コード名としての「mints提出準備ツール」表記を、正式名称「VA_MINTS」に統一した（CLAUDE.md・本書・企画書のタイトル、config.yaml・main.py等のコメント、mints提出前レポートのタイトル行、PyInstaller生成物名`dist/VA_MINTS.exe`を含む）。「mints」単体での表記（外部システムであるmints「記録」自体を指す箇所）は変更していない。あわせて画面UI（4.1節）を改修：サブタイトルの追加、状況表示欄への「状況：」見出し追加、フォルダ入力欄の幅縮小、フォルダ選択ボタンの「...」表記化、読み込み・書き出しボタンの強調表示、スキャン結果一覧の列名「処理内容（予定）」→「検出事項」への変更（mints提出前レポートの表記に統一）。 | **【要修正・その後さらに変更あり。下記の行を参照】** |
| （同日、上記の直後に再改訂） | **上記のツール名「VA_MINTS」を撤回し、正式に「VA mintsチェック」（表示名）／「VA_mintsCheck」（ファイル名）とする2階建ての命名に訂正した。** 理由：①mints（外部の民事裁判書類電子提出システム）の公式名称は小文字表記の「mints」であり、大文字の「MINTS」ではない。「VA_MINTS」という表記は誤ってこれを大文字化しているため訂正する。②他のVBAアセットのツールの慣行に合わせ、ツール名に機能（チェック）を含める。両者を区別する理由：「VA mintsチェック」は空白・小文字混在のため、ファイル名（PyInstaller生成物`dist/VA_mintsCheck.exe`等）としてそのまま使うと空白がトラブルの元になるため、ファイル名専用の表記を別途定めた。 | **【対応済み】ウィンドウタイトル・レポートタイトル・各種ドキュメントのタイトル・コメント類は「VA mintsチェック」、mints_prep.specのPyInstaller出力名は「VA_mintsCheck」に統一** |
| 2026-07-21 | **最重要警告・号証の連番欠番チェックの画面表示を徹底。** 号証の連番・欠番チェック（4.7節）の結果が、書き出し完了後にレポートファイル（mints提出前レポート.txt）を開かないと確認できず、見落としの危険があるとの指摘を受け、単体200MB超過・墨消し完全性の残存検出・個人情報パターンの検出（「最重要警告」）及び号証の連番・欠番チェックの結果を、**書き出し完了時（中止時を含む）に画面上の警告ダイアログでも表示する**よう変更した（4.8節参照）。あわせて、他に同様の「チェック結果が実行中に画面へ表示されない箇所」がないか確認したが、上記4種以外の検出結果（パスワード・操作制限PDF・用紙寸法・向き不一致・メタデータ等）は、いずれも書き出し前のスキャン結果一覧（4.1節）の「検出事項」列に表示済みであり、書き出し完了を待たずに確認できるため、追加の完了時ダイアログは不要と判断した。 | **【対応済み】processors/report_writer.pyに`collect_critical_warnings`・`format_evidence_sequence_warnings`を共通関数として切り出し、レポート出力（build_report_text）とui/app.pyの完了時ダイアログ（`_show_completion_warnings`）の双方から呼び出す構成とした** |
| 2026-07-21 | **分類（A〜D）の位置づけを確認し、検出事項の注記を追加。** 「ファイル名整形・メタデータ除去は本ツールで処理できるのだからAとすべきではないか」との論点について検討し、次のとおり確定した：**分類は変更しない**。理由：①分類は「検出された事実（現在の状態）」の把握であり、処理すれば適合できることと現在適合していることは別である。②処理の実行は逐次レビューでの個別確認制（チェックを外せば実行されない）であり、実行を既定事実化してAと表示することは確認原則（CLAUDE.md設計原則3）と矛盾する。③処理済み出力を再読み込みすればAになる（チェック専念方針の再検証ループが適合性確認の正規の手段）。あわせて、証拠番号スタンプの適用候補がA分類に含まれることの整合性も確認した：スタンプの要否（原本に既に番号が記載されているか）はツールには検出不能であり、スタンプは「検出」ではなく「提案（任意機能。4.7節）」のため分類に影響しない。この整理に基づき、A＝「検出できる要対処事項がない」と定義を明確化した。区別しやすさのため、ファイル名整形・メタデータ除去の検出事項文言に**「書き出し時に本ツールで処理できます」の注記**を追加した（他アプリでの対処が必要な検出事項と一目で区別できるようにするため）。 | **【対応済み】ui/formatting.pyの検出事項文言に注記追加。分類ロジック（scanner/classifier.py）は変更なし** |
| 2026-07-21 | **サブタイトルをタイトルバーに集約。** 画面最上部に置いていたサブタイトル行（「mints（民事裁判書類電子提出システム）「記録」提出前チェック・準備ツール」）を廃止し、ウィンドウタイトルにツール名に続けて「ー」区切りで併記する形に変更した（「VA mintsチェック ー mints（…）提出前チェック・準備ツール」）。 | **【対応済み】app.py** |
| 2026-07-21 | **画面デザインをMicrosoft製ダイアログの質感に統一。** フラットデザイン化後も洗練さに欠けるとの指摘を受け、Word等のダイアログ画面を参考に、Windows標準の日本語UIフォント（Yu Gothic UI）、白基調の入力欄・ボタン＋細いグレー枠線、ホバー・フォーカス時の青いアクセント（#0078d4）、最下部ステータス行上の区切り線、で全画面を統一した。テーマ設定はui/theme.pyに一元化し、逐次レビュー等のダイアログにも自動適用される。機能変更なし。 | **【対応済み】ui/theme.py新設、app.pyから呼び出し** |
| 2026-07-21 | **対象選択チェックボックスを追加。** 検出結果に問題があった場合、利用者は当該ファイルを他のアプリで修正のうえ本ツールに再度読み込ませることになるが、その都度フォルダ内の全ファイルを書き出し直すのは非効率であるとの指摘を受け、スキャン結果一覧（4.1節）の各行左端にチェックボックスを追加した。既定はON（全ファイル対象）とし、外したファイルはその回の書き出し対象から除外される。 | **【対応済み】ui/wrapping_table.pyにwith_checkbox・get_checked_states()を追加し、ui/app.py `_start_output_write`のeligible算出をチェック状態でさらに絞り込む構成とした** |
| 2026-07-24 | **プレビュー画面の全ページ表示と、完了時警告の対象範囲を修正。** ①逐次レビュー画面（4.7節）のプレビューが1ページ目に固定されていたが、原本に証拠番号が既に記載されていないかの確認は全ページに及ぶため、複数ページのPDFでは「前のページ／次のページ」ボタンでページ送りできるようにした。②書き出し完了時の警告ダイアログ「確認が必要な検出結果があります」（4.8節）が、対象外チェック・分類C/D等で実際には書き出されなかったファイルの検出結果まで含めてしまっていたため、実際に出力されたファイルに関する事項のみを対象とするよう修正した（枝番ファイル結合グループは、結合後の合成レコードでなく各メンバーの実ファイルの検出結果を展開して含める）。 | **【対応済み】①ui/preview.pyのrender_preview／render_preview_with_stampにpage_index引数とget_page_count()を追加、ui/write_review_dialog.pyにページ送りUIを追加。②processors/output_writer.pyにrecords_for_output()を追加し、ui/app.py `_start_output_write`の完了時ダイアログ呼び出しをself._scan_result.records（全件）からrecords_for_output(actual_planned)（出力対象のみ）に変更** |
| （同日、上記の直後） | **「検出事項を処理せずに出力した場合に、警告が表示されない」バグを修正（後に下記の設計変更で完全に解消）。** collect_check_warnings()は、ファイル名整形・メタデータ除去が逐次レビュー画面で必ず処理される前提で、この2種の検出事項を意図的に対象外としていた。しかし逐次レビューのチェックボックスは実行前個別確認（CLAUDE.md設計原則3）としてOFFにできる仕組みであり、OFFにして出力した場合はその前提が崩れ、完了時警告に何も表示されないまま未対処のファイルが出力されてしまっていた。当時はprocessors/report_writer.pyに`collect_unresolved_fix_warnings()`を新設して対応したが、下記の設計変更に伴い、この場当たり的な対応は不要になり削除した。 | **【対応済み・その後の設計変更に伴い該当コードは削除】** |
| （同日、上記の直後） | **【設計変更】書き出し完了時の集約警告ダイアログ「確認が必要な検出結果があります」を廃止し、逐次レビュー画面へすべての検出結果を一本化した。** 上記バグ修正で対症療法的に対応したが、「完了後にまとめて警告する」という設計自体が、実行前個別確認の原則（CLAUDE.md設計原則3）と根本的に相性が悪い（チェックを外す＝その場で検出結果を見ているはずだが、まとめ警告に頼ると見落としの再発を防げない）との指摘を受け、次のとおり再設計した。①逐次レビュー画面（4.7節）に、実行可否を選べる項目（ファイル名整形・メタデータ除去・証拠番号スタンプ）に続けて、本ツールでは対処できない検出事項（パスワード・操作制限・用紙寸法・向き不一致・墨消し完全性の残存・個人情報パターン・単体200MB超過）もグレーアウト（チェックボックス操作不可）の情報項目として一覧表示する。②これにより完了時の集約警告は不要になったため削除した。③「書き出しを中止」ボタンは「キャンセル」に変更し、意味を「残り全件の中断」から「この1件（又は1結合グループ）だけをスキップして次へ進む」に変更した。複数件をまとめて中断したい場合は、ウィンドウを閉じる操作（×ボタン）を使う（従来の「中止」と同じ挙動）。④号証の連番・欠番チェック（4.7節）のみ複数ファイルにまたがる検出結果のため、1件ずつのレビュー画面には収まらず、対象ファイル確定時点で逐次レビュー開始前に一度だけポップアップ表示する（従来どおり実行可否の選択は伴わない確認のみ）。 | **【対応済み】ui/review_logic.pyのReviewOptionにenabledフィールドを追加、build_review_options()がcollect_critical_warnings・collect_check_warnings（単独ファイルは対象record、結合グループは各メンバーrecordを展開）から情報項目を生成。ui/write_review_dialog.pyがグレーアウト表示・区切り線・注記を描画し、ボタンを「キャンセル」に改称（`_on_cancel`はabort_all=Falseで1件スキップ、ウィンドウクローズの`_on_abort`のみabort_all=True）。review_and_confirm()の戻り値を`(PlannedCopy\|None, bool)`のタプルに変更。ui/app.pyの`_start_output_write`から`_show_completion_warnings`を削除し、号証チェックのみループ開始前に`messagebox.showwarning`で表示。完了メッセージにスキップ件数を追記。これに伴い不要になったprocessors/output_writer.pyの`records_for_output()`・processors/report_writer.pyの`collect_unresolved_fix_warnings()`は削除（未使用コードを残さない方針）** |
| 2026-07-25 | **【全面点検】コード全体の再レビューで検出した約30件の不具合を一括修正した。** 利用者からの「コードに間違いが多い」との指摘を受け、検出系・処理系・UI層の3系統で全ソースを精査し、検出事項を実挙動の再現で裏付けたうえで全件修正した。主な修正：①メタデータ除去がパレット形式（Pモード）画像の内容を真っ黒に破壊（原本忠実性違反。パレット・透過を複製するよう修正）。②PDFメタデータ除去後にpikepdfがProducer・編集日時を再挿入し「処理→再読み込み→A」の再検証ループが収束しない（再挿入を無効化しXMPストリームも削除）。③素のJPEGが全件「メタデータあり→B」（PILのJFIF構造キーを検出対象から除外）。④墨消し検証が色を問わず塗り矩形を黒塗り扱いし表の網掛け等を誤検出（暗色のみに限定。画像・パス描画の黒塗りは検出不能である旨を既知の限界として明記）。⑤ページの回転属性（/Rotate）を無視して向き判定・スタンプ焼き込み（両方とも回転補正を追加）。⑥書き出しループに例外処理がなく1件の失敗でUIが操作不能に（1件ごとにスキップ／中止を選べるエラーダイアログ＋finallyでボタン復帰）。⑦上書き警告が事前計画名のみで判定され、レビューでの選択変更後の最終名は無警告上書き（書き出し直前に確定名で再チェック）。⑧証拠番号解析：全角チルダ（U+FF5E）の枝番範囲不受理・数字境界なしによる日付ファイル名の誤解釈（甲20240401→甲202）を修正。⑨PII検出：\bが漢字直後で機能せず「電話03-…」を系統的に見逃し・全角数字非対応（数字境界方式＋NFKC正規化＋ダッシュ類写像へ変更）。⑩衝突回避の連番付与が100文字上限を超える名前を生成（付与後に再切り詰め。casefoldキーでNTFSの大小文字非区別にも対応)。⑪バッチフォルダの事前mkdirによる空「提出用_NN」残留と完了表示の食い違い（実書き出し時までmkdirを遅延・実際の書き出し先を完了メッセージに明記）。⑫config.yaml検証の欠如（壊れた正規表現で全ファイルがD化。読み込み時に日本語メッセージ付きで検証し、起動時エラーもダイアログ表示）。⑬一時ファイル（~$・Thumbs.db等）の走査除外。⑭レポート：結合グループのメタデータ除去・結合元ファイル名の記録欠落、連番リネームの「ファイル名整形」虚偽表示（PlannedCopyにfilename_sanitized・renamed_for_collisionフラグを追加）。⑮キャンセルによるスキップで新たに生じた欠番の完了時警告を追加。⑯そのほか：文言（「再スキャン」→「読み込み」統一・200MBハードコード）、U+FF5Eの常時JIS警告ノイズ、同一枝番重複グループの結合除外、符号表示順（甲乙丙）、EXIF Orientation付きJPEGへのスタンプ位置、低解像度画面でのダイアログはみ出し、チェックリストのホイールスクロール、PII・メタデータ検出失敗の無警告化、陳腐化コメント・未使用変数等。 | **【対応済み】detectors（metadata/redaction/pdf/pii/filename）・processors（metadata_remover/evidence_stamp/evidence_merger/output_writer/report_writer）・scanner/walker・config.py・config.yaml・naming/evidence_number・ui（app/write_review_dialog/checklist_dialog/review_logic/formatting）を修正。回帰テスト35件を追加し計281件成功** |
| （同日、上記と同時） | **書き出し完了・中止ダイアログに「OK（フォルダを開く）」ボタンを併置。** 従来は完了メッセージの後に別ダイアログで「出力フォルダを開きますか？」と聞き直していたが、完了ダイアログ自体に「OK」「OK（フォルダを開く）」の2ボタンを置く方式に変更した（操作数の削減）。**【同日再改訂】ボタンのキャプションを「フォルダを開く」に簡素化（利用者指定）。** | **【対応済み】ui/app.pyに`_show_completion_dialog`を新設し、`_offer_open_output_folder`（askyesno方式）を削除** |
| 2026-07-25 | **【機能追加】向き不一致の修正（向き補正）を処理系機能として追加。** 従来、向き不一致（4.6）は検出・警告のみだったが、利用者の要望を受けて修正機能を追加した。チェック専念方針との整合：本機能はPDFの回転属性（/Rotate）のみを変更し、ページの内容（コンテンツストリーム・テキストレイヤー・画像）には一切触れない無損失・可逆な処理であり、スキャナ・複合機自身が向き指定に使うのと同じ仕組みである。内容の再配置を伴うため廃止した「用紙サイズ補正（拡大縮小配置）」とは性質が異なり、証拠番号スタンプ（オーバーレイ合成）・メタデータ除去と同様に「頻繁に必要かつ原本忠実性を損なわない処理」として処理系に含められると判断した。仕様：①逐次レビュー画面に「向き補正：基本形（A4=縦・A3=横）に合わせて90°回転」のチェックボックスを表示（検出済みの向き不一致ページのみが対象）。②内容の向き（文字の方向）はツールには解析できないため、既定はOFFとし、回転方向（左90°／右90°。**既定は左90°**〔2026-07-25利用者指定〕）のラジオボタンとプレビューの回転後表示による目視確認を経てユーザーが適用を判断する。③処理順は向き補正→証拠番号スタンプ→メタデータ除去（スタンプは回転後の「閲覧時の右上」に載る）。④枝番ファイル結合グループでは提供しない（メンバーの向き不一致は従来どおり検出のみの表示）。⑤補正済み出力を再読み込みすると向き不一致が解消しA判定に近づく（再検証ループが収束することをテストで確認済み）。 | **【対応済み】processors/orientation_fixer.py新設、output_writer.py（PlannedCopy.rotate_degrees・copy_to_outputの回転前段）、ui/review_logic.py（rotateオプション・情報項目からの移行）、ui/write_review_dialog.py（回転方向ラジオ＋プレビュー連動）、ui/preview.py（rotate_degrees引数）、report_writer.py（適用処理「向き補正」）、ui/formatting.py（検出事項に「書き出し時に本ツールで処理できます」注記）。テスト10件追加、計295件成功** |
| （同日、上記の直後） | **戸籍謄本の発行番号が「銀行口座番号」と誤検出される事例（4.9）を修正。** 「発行番号 00394577-20260303-00000024」のようなハイフン連結の書類番号の一部分（7〜8桁）が銀行口座番号パターンに合致していた。①銀行口座番号は、桁数だけでは整理番号・受付番号等と区別できないため、直前15文字以内に「口座」「普通」「当座」のいずれかがある場合に限って検出するよう既定パターンを変更。②マイナンバー・郵便番号・クレジットカード番号の境界判定にハイフンを追加し（(?<![0-9-])・(?![0-9-])）、ハイフン連結の書類番号の一部分を拾わないようにした。 | **【対応済み】config.yamlの既定パターンのみ変更（検出ロジックのコード変更なし）。実事例の回帰テスト3件を追加、計284件成功** |
| 2026-07-26 | **【要件適合性レビュー】要件定義書と実装の全面照合を行い、検出した不整合・不具合を一括修正した。** 主な修正：①**config.yaml編集ミスの起動時ダイアログ表示を完全化**（YAML構文エラー・キー欠落・型違い・空ファイルが未捕捉例外のまま--windowedのexeを無言終了させていた。すべて日本語メッセージのValueErrorへ変換し、起動時catchも全例外に拡大。symbols空リスト・digits非整数等の検証穴も塞いだ）。②**JPEGメタデータ除去を再エンコード方式からバイトレベルのセグメント除去方式へ変更**（旧方式はPillow既定quality=75の非可逆再圧縮を伴い画質が劣化＝原本忠実性違反。新方式はAPP1〔Exif/XMP〕・APP2〔ICC〕・APP13・COMセグメントのみを取り除き、圧縮済み画像データには1バイトも触れない無損失処理）。③**MP4/MP3のメタデータ検出をmutagen生タグAPIへ変更**（Easyタグはマッピング済みキーしか列挙せず、スマホ動画のGPS座標〔©xyzアトム等〕を系統的に見逃していた。mutagen非対応コンテナは「メタデータなし」でなく「検出不可」として注記）。④**HEIC判定の到達不能を修正**（ftyp→MP4判定が先にreturnしHEICブランド判定が実行されなかった。.mp4拡張子のHEICがA分類をすり抜ける経路を遮断。MOV〔qtブランド〕・MP3のCRC付きフレーム〔FF FA〕判定も追加）。⑤**操作制限PDF検出を4.6節の定義どおりに拡大**（印刷・抽出フラグ制限時のみ→暗号化辞書が存在すれば該当。編集のみ制限・全権限許可の暗号化PDFの見逃しを解消）。⑥**枝番ファイル結合＋スタンプで/Rotate付きメンバーの回転正規化が漏れていた**のを修正（単独ファイルには2026-07-25⑤で追加済みの処理が結合経路に及んでいなかった）。⑦**逐次レビュー画面の結合グループに「前のファイル／次のファイル」送りを追加**（プレビューが代表メンバーのみで、2件目以降の重複スタンプ目視確認ができなかった）。⑧**レポートに「検出のみの要修正事項」「書き出さなかったファイル（スキップ・失敗）」セクションを追加**（チェックOFF・キャンセルで書き出されなかったファイルの警告がレポートに現れず、フロー⑦「成功／警告／失敗の一覧」に照らし不完全だった。スキップ理由〔レビューでキャンセル／上書きを辞退／書き出しエラー〕も記録）。⑨**号証チェックの系列キー正規化**（「乙A001」と「乙Ａ001」が別系列扱いで実質重複を見逃していた。NFKC＋大文字化で正規化。全角枝番区切り「－」「＿」の受理、親番号〔甲001〕と枝番〔甲001-1〕の併存を重複として検出する改善も追加）。⑩**JIS X 0213外の文字検出をB（要修正）分類に反映**（従来は備考表示のみでAのままとなり「A＝検出できる要対処事項がない」の定義と矛盾。検出事項列にも非断定文言で表示）。⑪**サブフォルダを含めるかのオプションをUIに実装**（4.1節の「オプション」規定に対しUIが常時OFF固定だった。既定OFFのチェックボックスを追加）。⑫そのほか：スタンプ位置のMediaBox原点補正（原点非ゼロのPDFでのずれ）、画面文言の「200MB」「上限100文字」リテラルをconfig値参照へ、読み込み失敗時の前回結果破棄、未使用のbatch_planner.write_batchesをテスト側へ移動、携帯電話番号（ハイフンなし11桁）の既定PIIパターン追加、墨消し検証の既知の限界（白塗り非検出）の明文化（4.6節参照） | **【対応済み】config.py・ui/app.py・processors（metadata_remover/evidence_merger/evidence_stamp/report_writer/batch_planner）・detectors（metadata/format/pdf/filename）・naming/evidence_number・scanner（walker/classifier）・ui（formatting/review_logic/write_review_dialog）・models.py・config.yamlを修正。回帰テストを追加** |
| （同日、上記と同時） | **4.3節「出力ファイル名入力機能」の内部矛盾を解消（「出力ファイル名判定機能」へ全面改訂）。** 4.3節本文・第3章フロー④は「ファイル名一括編集UI＋連番自動採番の補助」を規定したままだったが、4.7節の「4.3節の既存方針＝ファイル名編集機能を持たないこと」という記載及び実装（判定のみ）と矛盾していた。実装過程で確定していた「ツールはファイル名の内容の適否を判断できないため編集・自動採番機能は持たない」方針を本文に明文化し、節名を「出力ファイル名判定機能」に改めた（4.3節【改訂の経緯】参照） | **【対応済み】docs/03_requirements.md 4.3節・第3章④・第8章の記載を改訂（実装は従来どおり判定のみ＝コード変更なし）** |
| 2026-07-26 | **ツール名を「VA mintsチェック」から「VA mints」に短縮し、ファイル名の表記も「VA_mintsCheck」から「VA_mints」に統一した。** 理由：名称が長いとの利用者の指摘を受け、表示名からサブ機能を示す「チェック」を省いた（ツールの性質・チェック専念方針は第8章で既に明確化されており、名称に含める必要性は薄い）。表示名・ファイル名の2階建て命名の枠組み自体（2026-07-21の改訂参照）は維持する。あわせて、名称短縮に伴いアイコン（assets/VA_mints.ico）の「mints」「チェック」2行組みデザインも、1行の「mints」表記に改めた。 | **【対応済み】ウィンドウタイトル・レポートタイトル・各種ドキュメントのタイトル・コメント類を「VA mints」に、mints_prep.specのPyInstaller出力名・アイコンファイル名・マニュアル/紹介記事のファイル名を「VA_mints」系に変更。scripts/generate_icon.pyを1行描画に変更しassets/VA_mints.icoを再生成** |
| （同日、上記の直後） | **証拠番号パターン判定（4.3節）で、枝番として成立しなかった区切り文字（「-」「_」「－」「＿」）が標目の先頭に残る不具合を修正。** 「甲001_売買契約書」のように、区切り文字の直後が数字でなく枝番として成立しない場合、従来はその区切り文字自体が標目（title）の先頭にそのまま残っていた（例：標目が"_売買契約書"になる）。単体ファイルでは標目フィールドを画面表示等に使わないため実害はなかったが、枝番ファイル結合時の出力ファイル名生成（processors/evidence_merger.py）では標目をそのまま使うため、「甲001-1~2 _売買契約書A.pdf」のように結合後ファイル名へ不要な区切り文字が漏れ出ていた。証拠番号部分より後ろの文字列を標目として切り出す際、空白に加えて区切り文字も先頭から取り除くよう修正した。 | **【対応済み】naming/evidence_number.pyのmatch_evidence_number()を修正（_BRANCH_SEP_CHARSを新設しlstrip対象に追加）。回帰テスト2件を追加、計327件成功** |
| （同日、上記の直後・設計変更） | **上記の修正方針を訂正：枝番ファイル結合時のファイル名生成で、標目との区切り文字を常に半角スペースに固定する（＝ツール側の書式に統一する）のではなく、代表ファイル（最小枝番）が元々使っていた区切り文字をそのまま踏襲するよう変更した。** 理由：4.3節「ツールはファイルの中身をプレビューできる立場になく、ファイル名の内容（標目の付け方等）の適否を判断できないため、編集・自動採番機能は持たない」という原則を追求すると、区切り文字を"-"や"_"から半角スペースへ書き換えること自体も、結合というファイル内容変更処理を経由した「ファイル名編集」に当たり、この原則と整合しない（利用者が意図的に選んだ表記を、結合時にツールが上書きしてしまう）と判断した。単体ファイルは元の区切り文字のまま何もしない（従来どおり）一方、結合ファイルの生成時も、一次資料の例（「甲001 売買契約書原本」＝空白）に固定するのではなく、代表ファイル自身の区切り文字（空白・「-」「_」「－」「＿」いずれか、又は区切りなし）をそのまま再現する。 | **【対応済み】models.pyのEvidenceNumberMatchに`title_separator`フィールドを追加。naming/evidence_number.pyのmatch_evidence_number()が区切り文字を正規表現で捕捉し保持。processors/evidence_merger.pyのoutput_filename()が固定の半角スペースではなく代表ファイルのtitle_separatorを使うよう変更。回帰テスト3件を追加、計330件成功** |

---

## 第1 目的

法律事務所の職員が、mints「記録」への提出に先立ち、フォルダ単位でファイル群を一括して制約適合化・検証できるツールを提供し、提出前の手作業（用紙サイズ確認、ファイル名調整、パスワード確認等）を省力化する。**チェック専念方針（第8章）により、形式変換・自動修復は行わず、検出・警告と、頻繁に必要となる適合化処理（ファイル名整形・メタデータ除去・200MB分割・証拠番号処理）に専念する。**

**本ツールは、完全にローカルで動作することを最重要の設計原則とする。** 訴訟の証拠・準備書面といった機密性の高い法律文書を扱う性質上、外部サーバーへのデータ送信（クラウドAPI、外部OCRサービス、外部変換サービス、テレメトリ送信等）を一切行わず、処理はすべて利用者のPC上で完結させる。この原則は、第9章に定める全ての採用ライブラリ・処理方式の選定基準となる。

## 第2 対象範囲

### 2.1 入力として受け付ける形式（チェック専念方針。2026-07-20改訂）
- mints「記録」対応形式：PDF、MP4、MP3、JPEG、PNG（適合化処理〔4.5〜4.7〕の対象）
- **DOCX、XLSX、PPTX、MOV、AVI、WMV、WAV、M4A、AAC、TIFF、BMP、GIF、HEIC等、mints「記録」非対応形式は、変換元として受理しない。** 検出した場合は分類C（要変換）としてスキャン結果一覧に表示し、「対応形式（PDF等）に変換してから本ツールに再度読み込んでください」という趣旨の案内を表示するにとどめる（変換処理自体は実装しない。第8章参照）。
- 上記のいずれにも該当しない形式（CADファイル、圧縮ファイル、実行ファイル等）は**処理対象外（分類D）**とし、検出時にレポートへ「未対応形式」として記録する。

### 2.2 出力形式
常にmints「記録」対応形式（PDF／MP4／MP3／JPEG／PNG）のいずれかとする。入力が既に対応形式である場合のみ適合化処理を行う。非対応形式（分類C）は変換を行わず、2.1節の案内表示にとどめる。

### 2.3 対象外とする処理
- 「記録外」への提出を目的とした処理（DOCX/XLSX/PPTXをそのまま出力すること）
- mints画面へのアップロード操作そのもの（API連携等は行わない。ローカルでのファイル準備に専念する）
- 証拠説明書（xlsx公式書式）の自動生成（第10章「将来検討」を参照。本要件定義では対象外）

---

## 第3 処理フロー（全体像）

```
① フォルダ選択（入力フォルダ／出力フォルダ）
        ↓
② フォルダ内全ファイルのスキャン・状態把握
        ↓
③ ファイルごとの分類判定
   （A：対応形式・適合済み／B：対応形式・要修正／C：非対応形式・要変換／D：処理対象外）
        ↓
④ 出力ファイル名の判定（4.3節。ツール内での編集は行わない）
   既存のファイル名が証拠番号パターン（甲001等）に合致するかを判定
   → 合致する場合：証拠番号処理（右上スタンプ・枝番ファイル結合等）を適用候補とする
   → 合致しない場合：証拠番号処理は非適用とする
        ↓
⑤ 分類ごとの処理実行
   B → 適合化処理（サイズ超過検出時は複数回提出のバッチ分割を実行。単体200MB超過は検出・警告のみ）
   C → 変換処理は行わない。「対応形式に変換のうえ再読み込みしてください」と案内し、書き出し対象外とする（チェック専念方針。第8章参照）
   D → スキップ（レポートに記録）
        ↓
⑥ 出力フォルダへの書き出し（④で入力したファイル名を基準に、4.5節のファイル名整形ルールを適用。合計サイズが200MBを超える場合は「提出用_01」「提出用_02」等のサブフォルダに事前仕分けし、その旨を画面上で通知。mintsへの実際のアップロードは対象外＝ユーザーが手作業で行う）。**書き出しは、対象ファイル（又は1枝番ファイル結合グループ）ごとに、プレビューと処理選択チェックボックスを伴う画面を1件ずつ表示しながら逐次進める（第4章冒頭の確認原則の具体的なUI実装。詳細は第4章冒頭参照）**
        ↓
⑦ 処理結果レポートの生成（成功／警告／失敗の一覧）
```

一括処理を原則とするが、個別ファイルの処理結果を確認しながら進められるよう、処理前のプレビュー（分類結果一覧の表示）を経てから実行に移る2段階方式とする。ファイル名の判定結果（④）は、この分類結果プレビューと同じ画面（スキャン結果一覧の「検出事項」列）に表示し、証拠番号処理の適用候補になるかどうかを読み込み時点で確認できるようにする。

---

## 第4 機能要件

**【全機能に例外なく適用される原則】ファイルの内容・体裁を変更するいかなる処理も、それがどれほど技術的に無害（ロスレス）と判断されるものであっても、実行前に必ずユーザーの個別の確認を得る。** ファイルを変更する処理は、その内容にかかわらず、証拠として提出した際に「改変されたものではないか」という評価を招きうる。ツールが「これは情報を失わない処理である」と技術的に判断したとしても、その判断だけを根拠に無確認で実行してはならない。この原則は、従来「無条件（デフォルト実行）」としていた処理（無彩色画像のグレースケール変換等）にも例外なく適用され、以下の各節の記載を上書きする。

具体的な運用は次のとおりとする。
- **ファイル内容を変更しない処理**（フォルダへの仕分け配置、証拠番号欄への入力支援等）は、実行可否の確認（同意を得てから実行するか否かの選択）の対象外とする。**ただし、その処理結果がユーザーの実務（提出回数・スケジュール等）に影響する場合は、確認とは別に、処理完了時に画面上で明示的に通知しなければならない**（レポートファイルへの記載のみでは足りない）。「確認不要」は「知らせなくてよい」ことを意味しない。
- **ファイル内容を変更する処理**は、処理の種類ごとに、実行前に「この処理を行うとどうなるか」を示したうえで、ユーザーが個別に許可（実行／スキップ）を選択できるUIを設ける。同種の処理を複数ファイルにまとめて適用する場合（例：全ファイルのメタデータ除去）でも、**その処理の種類について**一度の確認を経てから一括実行することは許容するが、確認そのものを省略してはならない。
- 確認UIには、対象ファイル数・処理内容・（可能な場合は）推定される変化の程度を表示する。

**採用した確認UIの具体的設計（処理の種類ごとの一括確認より厳格な実装）**：上記は「処理の種類ごとの一括確認」を最低要件として許容するが、本ツールはこれを上回る、**書き出し対象を1件（又は1枝番ファイル結合グループ）ずつ処理する逐次レビュー画面**を採用する。

- 書き出し対象ファイルは、④で決定した順序（証拠番号のまとまり・200MB分割のバッチ割当てを踏まえた並び順）のとおり、1件ずつ画面に表示される。各回、画面には「今どのファイルを処理しているか」（進捗表示：○件目／全△件）を明示する。
- 画面右側には、対象ファイルのプレビュー（PDFは全ページを「前のページ／次のページ」ボタンで確認可能、画像はそのもの）を表示する。**証拠番号スタンプを付けるかどうかを判断する際には、原本に既に証拠番号が記載されている（重複スタンプになる）可能性があるため、プレビューによる目視確認を必須とする。** パスワード付きファイル・音声動画ファイル等、プレビューが技術的に生成できない場合はその旨を表示する。**証拠番号スタンプのチェックボックスをON/OFFすると、プレビューは即座に再生成される**（ON時：実際にラベルを焼き込んだ見た目、OFF時：証拠番号を消去した未適用の見た目）。
- 画面左側には、そのファイルに適用する処理（ファイル名整形・メタデータ除去・証拠番号スタンプ）をチェックボックスで選択する。チェックボックスの初期状態（ON/OFF）は、4.2節の検出結果に基づく既定の推奨内容（例：メタデータが検出されていれば除去にチェック）とし、ユーザーは画面上で個別に変更できる。該当する処理がない場合はチェックボックスを表示しない。**ただし証拠番号スタンプは、対象がPDFの場合のみ既定でONとし、画像（JPEG/PNG）の場合は既定でOFFとする**（写真等の画像は、PDFの証拠〔契約書等の書面〕と異なり原本の見た目そのものが証拠内容と直結する場合があり、自動推奨の対象からは外し、個別の判断に委ねる）。
- **【2026-07-24再改訂】実行可否を選べる項目に続けて、本ツールでは対処できない（検出のみの）項目も一覧に含める。** パスワード付き・操作制限PDF・用紙寸法（A4/A3以外）・向き不一致・墨消し完全性の残存検出・個人情報パターンの検出・単体200MB超過は、いずれもチェックボックスをグレーアウト（操作不可）表示し、「検出はされているが本ツールでは対処できない」ことをその場で明示する。枝番ファイル結合グループは、結合対象となる各ソースファイルの検出結果を、どのファイル由来か分かる形でそれぞれ列挙する。これにより、書き出し完了後にまとめて警告する画面（旧設計）を設けなくても、実行前個別確認の原則（第4章冒頭）どおりすべての検出結果がその場で必ず目に入る。
- 「この内容で書き出す」を選ぶと、その回の選択内容でただちに書き出しを実行し、次の1件へ進む。**【2026-07-24再改訂】「キャンセル」を選ぶと、この1件（又は1枝番ファイル結合グループ）を書き出さずに次の対象へ進む**（複数件をまとめて処理を打ち切りたい場合は、ウィンドウを閉じる操作〔×ボタン〕を使う。残りすべてが未処理のまま入力フォルダに残る）。
- **出力フォルダの上書き確認は、他の警告・確認より先に最優先で表示する。** 単体200MB超過警告・枝番ファイル結合の確認・ファイル別逐次レビューのいずれよりも前に表示し、ユーザーがそれらに時間をかける前に続行するかどうかを早期に判断できるようにする（この時点では枝番ファイル結合の確認はまだ行っていないため、結合候補はすべて結合されるものと仮定した既定計画で上書きの有無を判定する）。
- 枝番ファイル結合（4.7）は複数ファイルにまたがる決定であり、1ファイル単位の逐次レビューにはなじまないため、結合候補一覧を**グループ単位のチェックボックス**でまとめて確認する別画面を、逐次レビューの前段に設ける。
- **書き出し完了時（中止時を含む）、出力フォルダをエクスプローラーで開くかどうかを確認する。** 「はい」を選ぶと、OS標準の方法で出力フォルダを直ちに開き、書き出し結果をその場で確認できるようにする。フォルダを開く操作自体はファイルを変更しないため確認UI原則（第4章冒頭）の対象外だが、ユーザーの意図しない画面遷移を避けるため、無条件に開くのではなく選択式とする。

### 4.1 フォルダ選択・スキャン機能
| 項目 | 仕様 |
|---|---|
| 入力フォルダ選択 | GUIによるフォルダ選択（サブフォルダを含めるかはオプション） |
| 出力フォルダ選択 | GUIによるフォルダ選択（入力フォルダと同一指定も許容するが、上書き確認を必須とする） |
| スキャン結果表示 | ファイル名・形式・サイズ・分類（A〜D）・検出事項（想定される処理内容）を一覧表示。「検出事項」列名はmints提出前レポートの表記（4.8節）に合わせる【2026-07-21改称。旧称「処理内容（予定）」】 |
| **対象選択チェックボックス【新規機能。2026-07-21追加】** | 各ファイルの左端にチェックボックスを表示し、その回の「ファイルを書き出し」の対象に含めるかどうかを個別に選択できるようにする。**既定はON（全ファイル対象）。** チェックを外したファイルはこの回の書き出し対象から除外される（分類・検出結果自体は変更されない）。背景：チェックの結果、一部のファイルに問題が見つかった場合、利用者は当該ファイルを他のアプリで修正のうえ本ツールに再度読み込ませることになるが、その都度フォルダ内の全ファイルを処理し直すのは非効率であるため、対象を絞り込めるようにする。**【2026-07-21追記】書き出し対象になり得ない分類（C：要変換・D：対象外）の行は、チェックOFF・操作不可（グレーアウト）で表示し、選択の余地がないことを視覚的に示す。【2026-07-21追記】見出し（「対象」）自体を全選択チェックボックスとし、ONで全行ON・OFFで全行OFFに一括切替できるようにする（操作不可のC・D行は影響を受けず常にOFFのまま。再読み込み時はONへ戻る）** |

### 4.2 ファイル状態把握機能
各ファイルについて、以下を判定する。

| 判定項目 | 対象形式 | 判定内容 | 根拠 |
|---|---|---|---|
| 形式判定 | 全形式 | 拡張子及びファイルのマジックナンバー（実体）を照合し、対応／変換要／対象外を判定 | 報告書第2章 |
| ファイルサイズ | 全形式 | 単体サイズを取得する。**単体で200MBを超えるファイルを検出した場合は、「提出不可能」に相当する重大警告として扱う**（4.5節の合計サイズ通知とは別に、対処法がない限りmintsに一切追加できないと強く推認されるため。詳細は報告書第8章確定事項5参照） | 報告書第3章1節・第8章確定事項5 |
| ファイル名 | 全形式 | 拡張子込みの文字数（全角・半角とも1文字）、JIS X 0213外の文字、禁止文字の有無を判定 | 報告書第3章2節 |
| パスワード有無 | PDF | 暗号化の有無を検出 | 報告書第4章1節（確定・一次） |
| 用紙寸法 | PDF | 全ページを実測し、A4（210×297mm）／A3（297×420mm）／それ以外を判定（許容誤差はパラメータ化） | 報告書第4章1節 |
| 向き | PDF | ページの縦横比から向きを判定し、内容との整合を確認（自動判定は困難なため警告表示にとどめる） | 報告書第4章1節 |
| メタデータ | 全形式 | 作成者・編集者・GPS位置情報等の有無を検出 | 報告書第3章5節 |

### 4.3 出力ファイル名判定機能【2026-07-26改訂：編集UI・自動採番の撤回を明文化】

**【改訂の経緯】** 本節は当初「出力ファイル名入力機能」として、スキャン結果一覧上でのファイル名一括編集UIと連番自動採番の補助機能を規定していた。しかし実装過程で「ツールはファイルの中身をプレビューできる立場にないため、ファイル名の内容（標目の付け方等）の適否を判断できない。ファイル名は利用者があらかじめエクスプローラー等で適切に付けている前提とし、ツール側での編集・自動採番機能は持たない」との方針が確定し（4.7節「号証の連番・欠番チェック」の「4.3節の既存方針＝ファイル名編集機能を持たないこと」という記載はこの確定方針を指す）、実装もこの方針に従っている。本節の旧記載は改訂されないまま4.7節と矛盾した状態になっていたため、確定方針に合わせて全面改訂した。ファイル名がmintsの制約に技術的に反する場合（100文字超過・禁止文字）の整形は4.5節（書き出し時の逐次レビューで実行可否を選択）が引き続き担う。

| 項目 | 仕様 |
|---|---|
| 判定タイミング | 4.2（状態把握）の直後に実施する。ファイル名（証拠番号パターンへの合致）は後続処理の分岐条件として用いるため、書き出し段階まで判定を遅らせない |
| 判定対象 | 既存のファイル名をそのまま判定対象とする。**ツール内でのファイル名編集UI・連番自動採番機能は設けない**（上記【改訂の経緯】参照。号証の連番・欠番はチェック機能〔4.7節〕が検出・警告し、改名は利用者がエクスプローラー等で行い再読み込みする＝チェック専念方針の再検証ループ） |
| ファイル名パターンの判定 | 既存のファイル名が、証拠番号の形式（「甲」「乙」「丙」＋数字、枝番付きを含む）に合致するかを判定する |
| 処理分岐への反映 | 判定結果に応じ、後続処理の適用候補を次のとおり自動的に切り替える。**証拠番号パターンに合致** → 4.7（証拠番号処理機能）の各処理（右上スタンプ、枝番ファイル結合等）を適用候補としてスキャン結果一覧・逐次レビューに表示し、ユーザーが個別に有効化を選択できるようにする。**合致しない**（準備書面・証拠説明書等と推定される） → 4.7の証拠番号処理は既定で非表示・非適用とする |
| 最終検証との関係 | 既存のファイル名は、4.5節のファイル名整形（100文字以内・禁止文字除去。書き出し時の逐次レビューで実行可否を選択）の対象とする |

### 4.4 形式変換機能 【廃止（チェック専念方針による。2026-07-20）】

**本節は廃止経緯の記録として残す。以下の変換機能は実装しない。** 非対応形式ファイルを検出した場合の扱いは第2.1節・第3章処理フロー⑤を参照（「対応形式に変換してから本ツールに再度読み込んでください」という案内表示にとどめる）。

<details>
<summary>廃止前の記載（参考）</summary>

**いずれの変換も、第4章冒頭の原則に従い、実行前にユーザーの確認を得る（変換の種類ごとに一括確認可）。**

| 変換元 | 変換先 | 処理内容 |
|---|---|---|
| DOCX/XLSX/PPTX（旧形式含む） | PDF | レイアウトを保持したままPDF化。用紙サイズはA4又はA3に設定した状態で出力する（変換時に用紙サイズを指定し、事後の用紙サイズ修正処理を不要にする） |
| TIFF/BMP/GIF/HEIC等 | JPEG又はPNG | 元の色情報を保持したまま変換（既定はJPEG。可逆性が必要な場合はPNGを選択可） |
| MOV/AVI/WMV等 | MP4 | コンテナ変換を基本とし、コーデックがMP4非対応の場合のみ再エンコードする（画質劣化を最小化） |
| WAV/M4A/AAC等 | MP3 | 音声のみの変換（既定ビットレートを設定可能とする） |

変換処理後のファイルには、4.5以降の適合化処理を通常どおり適用する（各処理についても同様に確認を要する）。

</details>

### 4.5 適合化処理機能（全形式共通）
| 処理 | 内容 | 根拠 |
|---|---|---|
| ファイル名整形 | 100文字超過の場合は自動短縮を提案（ユーザー確認要）。**禁止文字の置換（アンダースコア等）も、対象ファイルと置換内容の一覧を提示したうえでユーザーの確認を得てから実行する（無確認での自動置換は行わない）** | 報告書第3章2節（確定・一次） |
| 200MB分割（複数回提出の事前仕分け。第一選択）**（実行可否の確認は不要＝ファイル内容を変更しないため。ただし通知は必須）** | **【再訂正：事前仕分けを復活】前回、「mints自身が対話的に容量超過をブロックするため、事前の物理的仕分けは不要」と簡素化したが、この判断は「mintsに拒否されない」という安全性のみに着目しており、ユーザーの実務上の手間とヒューマンエラーのリスクを見落としていた。実際には、mintsの対話的チェックは、追加操作の途中でブロックされた際に「今のリストのまま提出するか、入れ替えるか」をその場で即興的に判断させ、次回提出時にはユーザー自身が「どのファイルが未提出か」を人力で管理しなければならない。これは、証拠ファイルの提出漏れという実害に直結しうるヒューマンエラーのリスクであり、本ツールが解消すべき「相当な手数」そのものである。したがって、事前の物理的仕分け（ビンパッキング＋提出用サブフォルダの自動生成）を復活させる。**根拠が変わった点に注意**：以前は「mintsに拒否されないため」という理由だったが、今回は「ユーザーの手作業によるミス（提出漏れ）を防ぐため」という理由である。**<br>**グルーピング方法（再訂正：入力順を維持）**：処理済みファイルを**入力順（スキャン結果の一覧表示順）のまま**貪欲法で積み上げ、累積サイズが200MBの安全マージン（既定90%＝180MB、設定変更可）に達する直前で区切り、次のバッチへ移る。ファイル名順・証拠番号順への並べ替えは行わない（利用者が画面で見ている表示順とツールの処理順が一致している方が、処理イメージに近く分かりやすいため）。ただし、同一証拠番号・枝番のファイル群は分割せず同一バッチにまとめる。この場合も入力順の原則は維持し、グループの挿入位置はグループ内で最初に現れたファイルの入力順を基準とする（グループ全体をファイル名順に並べ替えたりはしない）。**この結果、入力順の後方にある小さいファイルが、実際には手前のバッチにまだ収まる場合でも、そちらへ詰め替える最適化は行わない（バッチ間に多少の無駄〔空き〕が生じることを許容する）。**<br>**出力フォルダ構造**：**分割が発生する場合（バッチが2つ以上になる場合）のみ**、出力先フォルダの直下に「提出用_01」「提出用_02」...という提出回ごとのサブフォルダを作成し、各バッチに属するファイルをそこへ配置する。**1バッチで収まる場合（＝合計サイズが安全マージン以内で分割不要な場合）は、サブフォルダを作らず出力フォルダ直下に直接書き出す**（第3章処理フロー⑥「合計サイズが200MBを超える場合は...サブフォルダに事前仕分け」と表現を一致させる）。ユーザーは分割時、各サブフォルダを順に開き、全選択して提出するだけでよく、どのファイルが未提出かを自分で管理する必要がない。<br>**通知の必須化**：分割が発生する場合（バッチが2つ以上になる場合）、処理完了時に画面上で「合計サイズが200MBを超えるため、○回に分けて提出する必要があります。『提出用_01』から順にご提出ください」という趣旨の通知を明示的に表示する。<br>**手動アップロードとの関係**：mints画面への実際のアップロード操作は本ツールの対象外（第2.3節）であるため、ユーザーは出力された各サブフォルダの中身を、提出回ごとに手作業でmintsにアップロードする。ツールが行うのは仕分けまでである | 報告書第3章1節（確定・一次＝合計200MB自体）／操作マニュアル65〜67頁・別紙2エラー#48（現物精査。挙動の理解自体は維持しつつ、対応方針を再訂正） |
| **単体ファイル200MB超過の検出・警告（合計サイズ通知とは別の重大警告）** | 4.2節の状態把握で、**単体ファイルが200MBを超えると検出された場合、他のファイルとの合算を問わず、そのファイル単独では絶対にmintsへ追加できないと強く推認される**（追加時チェックが累積サイズを対象とし、単体で既に200MBを超えていれば最初の追加操作自体が拒否されるため。報告書第8章確定事項5参照）。これは「複数回に分ければ解決する」問題とは性質が異なり、**圧縮又は分割という中身の変更を行わない限り、原理的に提出不可能**である。この事実を処理完了時の通知及びレポートで**最も重要度の高い警告**として明示する（「このファイルは単独で200MBを超えており、現状のままではmintsに提出できません。圧縮又は分割が必要です」）。**実際の圧縮・分割の実行機能自体はチェック専念方針により廃止した**（4.5節・4.6節「廃止した機能」参照）。検出・警告にとどめ、対処はユーザーの手作業（他のツールでの圧縮等）に委ねる | 報告書第8章確定事項5（機構解明により確度が向上） |
| **ファイル分割（代替手段・要注意） 【廃止（チェック専念方針による。2026-07-20）】** | 本行は廃止経緯の記録として残す。以下は実装しない：複数回提出では対応できない場合の代替手段として、ファイル自体を複数に分割するオプションを提供する。**選択時は必ず警告を表示する**：mintsの「原則1証拠＝1ファイル」の規律との関係で、分割は証拠の提出単位を変更する行為であり、証拠説明書・証拠番号（枝番構成）の見直しが必要になる可能性がある旨を明示し、ユーザー（訴訟代理人）の判断による選択であることを明確にする。技術的な分割方法は形式により異なる：PDF＝ページ範囲での分割、MP4＝ffmpegによる時間区切り分割、MP3＝フレーム境界〔0xFF同期〕での分割。分割後のファイル名は、4.3節（出力ファイル名判定機能）・4.7節（証拠番号処理）の枝番ファイル結合の枠組みと整合させ、「甲001-1」「甲001-2」等の範囲表記を提案する | 報告書第4章1節・第5章1節（枝番の扱い）との関連。単体ファイル上限の不存在は確定事実ではなく推論にとどまる点は報告書第8章確定事項5参照 |
| メタデータ除去 | PDFプロパティ、画像Exif（GPS含む）、Office文書プロパティ、音声・動画タグ情報を一括除去。**除去対象の項目一覧を提示したうえで、ユーザーの確認を得てから実行する（無確認での自動実行はしない）** | 報告書第3章5節 |

### 4.6 適合化処理機能（PDF固有）
| 処理 | 内容 | 根拠 |
|---|---|---|
| 用紙サイズ検出・警告 | A4／A3以外と判定されたファイルを検出・警告する。**用紙サイズ補正（拡大縮小配置）の自動実行は廃止（チェック専念方針による。2026-07-20）**。「元原稿を修正し、他のツール（Word/Excelのページ設定、PDF編集ソフト等）でA4又はA3に修正のうえ、本ツールに再度読み込んで再検証してください」という趣旨の案内を表示する | 報告書第4章1節 |
| パスワード解除 | 検出時に警告表示し、解除処理（要パスワード入力、又はユーザーによる解除済みファイルの再指定）を促す。自動解除は行わない（セキュリティ上の理由） | 報告書第4章1節（確定・一次） |
| **操作制限（印刷・コピー制限）PDFの検出【新規・チェック機能。2026-07-20追加】** | 閲覧可能だが印刷・コピー等が制限されたPDF（オーナーパスワードによる権限制限。登記情報提供サービスからダウンロードしたPDF等が典型例）を検出し、警告する。ユーザーパスワードが必須で開けないPDF（上記「パスワード解除」の対象）とは別のフィールドで判定・区別する（pikepdfで暗号化辞書・権限フラグ`allow.*`を確認。ユーザーパスワードなしで開けるが暗号化辞書が存在する場合に該当）。mintsはパスワード付きファイルを拒否するため（操作マニュアル65頁・エラー#45）、この種のPDFも拒否される可能性が高いが、確定した一次資料の記載はないため断定は避ける。**検出のみ行い、制限の解除処理は実装しない。**警告文言では「制限のないPDFとして再取得するか、他のツールで制限を解除してから本ツールに再度読み込んで再検証してください」と案内する | 操作マニュアル65頁・別紙2エラー#45（パスワード全般の規律からの類推。権限制限自体の確定的な一次資料記載はなし） |
| 向きの適正化 | A4は縦置き、A3は横置きを基本形として、内容の向きとページ設定の不一致を警告 | 報告書第4章1節 |
| テキストレイヤー付与（OCR）・テキストレイヤー削除 【廃止（チェック専念方針による。2026-07-20）】 | 本行は廃止経緯の記録として残す。以下は実装しない：画像のみのPDFへの日本語OCR付与オプション、及び既存テキストレイヤーの削除オプション。画像のみのPDFで検索性が必要な場合は、他のOCRソフトで処理してから本ツールに再度読み込んで再検証するよう案内する | 報告書第4章1節（二次・推奨）／本節での追加方針 |
| 墨消し完全性の検証【検出・警告は維持】 | ページ内の黒塗り・マーカー等の被覆オブジェクト（塗りつぶし矩形、ハイライト注釈等）を検出し、その座標範囲と下層のテキストオブジェクト（文字の位置情報）とを照合して、被覆下に文字情報が残存しているかを判定する（ファイル内容を変更しないため確認原則の対象外・自動実行）。**防止処理（選択的除去・ページ全体のラスタライズによる実際の除去実行）は廃止（チェック専念方針による。2026-07-20）**。残存を検出した場合は、他のPDF編集ソフトで墨消しをやり直し、本ツールに再度読み込んで再検証するよう案内する。**【既知の限界（2026-07-26明文化）】**画像として貼り付けられた黒帯、rect以外のパスで描かれた塗りつぶし、及び白・薄色の塗り矩形による失敗墨消しは検出できない（明色まで対象にすると表セル網掛け等の通常の文書装飾が軒並み誤検出になるため、暗色の塗り矩形に意図的に限定している）。本検証は「検出できたものを警告する」補助であり、墨消しの完全性を保証するものではない | 準備の手引39頁（マーカー機能のみでは文字情報が完全に削除されない旨の指摘） |
| 無彩色検出とグレースケール変換 【廃止（チェック専念方針による。2026-07-20）】 | 本行は廃止経緯の記録として残す。ラスター画像の色分布解析によるグレースケール変換提案・実行は実装しない | 本節での追加方針（確認要件は第4章冒頭の原則により訂正） |
| 圧縮によるサイズ削減（選択肢の一つ・段階的縮小） 【廃止（チェック専念方針による。2026-07-20）】 | 本行は廃止経緯の記録として残す。メタデータ除去→グレースケール変換→dpi低減→JPEG再圧縮率引き上げの段階的圧縮は実装しない。サイズ超過（単体200MB超過・合計200MB超過）は4.5節の検出・警告及び200MB分割で対応する | 本節での追加方針（第6章・第7章の原則との整合を前提とする） |

### 4.7 証拠番号処理機能（オプション）
本節の各処理は、4.3節（出力ファイル名判定機能）で証拠番号パターンに合致すると判定されたファイルに対してのみ適用候補となる。ユーザーはプレビュー画面で、適用候補として提示された処理を個別に有効化・無効化できる。

| 処理 | 内容 | 根拠 |
|---|---|---|
| 証拠番号入力支援 | 4.3節で入力された証拠番号（甲001等）に基づき、ファイル名を「甲001 標目」形式に自動整形 | 報告書第5章1節 |
| 右上スタンプ（PDF・画像） | オプションで、PDFの各ページ右上又は画像に証拠番号を焼き込む機能を提供（義務ではなく任意機能と位置づける）。**スタンプの見た目（黒字／赤字／赤字＋赤枠）は設定ファイル（config.yaml）で指定する。既定値は「赤字（囲みなし）」（`evidence_stamp.style: red`）とする。** mints導入前の紙媒体実務では赤枠・赤字が慣行だったが、一次資料（準備の手引・操作マニュアル・FAQ）を精査した結果、色・枠についての規定はどこにも見当たらなかった（第7章「公式規定のない事項の扱い」の対象）。したがって黒字が正式というわけではなく、赤字はあくまで**紙媒体実務の慣行を踏襲した既定値の選択**にとどまる（ユーザーはconfig.yamlの編集でいつでも変更できる）。実行中の画面上での切替は不要であり、設定ファイルでの固定指定のみとする。**【実装方式の明確化。2026-07-20】PDFへのスタンプは、ページをラスタライズ（画像化）せず、既存ページ内容の上にオーバーレイオブジェクトとして合成する方式で実装する（reportlabで生成した透明な上乗せページをpypdfの`page.merge_page()`で合成）。元PDFのテキストレイヤー（検索性）・画質は一切損なわれない。本節の「焼き込み」という表現はこの方式を指す** | 報告書第8章確定事項1（右上スタンプ自体）。色・枠は一次資料に規定なし（本節での追加方針）。オーバーレイ合成方式は実装上の選択（画質・検索性を損なわないための方針） |
| **スタンプ位置調整【新規機能。2026-07-20追加】** | スタンプを焼き込む前に、対象ページのプレビュー上でスタンプ位置を表示し、既存の文字・画像とスタンプ位置が重なる場合に、ユーザーが位置（上下左右のオフセット）を個別に微調整できるUIを設ける。既定位置は右上（config.yamlのmargin_top_mm／margin_right_mm）とし、調整結果はそのファイル（又は結合グループ）にのみ適用する（設定ファイルの既定値自体は変更しない） | 本節での追加方針（一次資料に位置調整の規定はなし。実務上、右上以外に既存記載がある証拠原本への対応として追加） |
| 枝番ファイル結合 | 複数ファイルを1つの証拠として結合する場合、範囲表記（甲001-1〜20等）でのファイル名生成を支援 | 報告書第5章1節 |
| **号証の連番・欠番チェック【新規・チェック機能。2026-07-20追加】** | 4.3節の証拠番号パターン判定と連動し、フォルダ内の証拠ファイル群の証拠番号（甲001、乙A001等）を集計して、(a)番号の飛び（欠番）、(b)重複、を検出して警告する。符号（甲・乙・丙、乙A等）ごとに独立した連番系列として扱う。枝番（甲001-1〜3等）は親番号単位で1つと数える。**警告のみで、自動採番の押し付けはしない**（4.3節の既存方針＝ファイル名編集機能を持たないことと整合）。**【2026-07-21追記・2026-07-24改訂】レポートファイルにのみ記載され、書き出し中に画面へ表示されないままでは見落としの危険があるため、画面上でも明示する。他の検出結果と異なり複数ファイルにまたがる検出結果（特定の1ファイルの問題ではない）のため、1件ずつの逐次レビュー画面には収まらず、対象ファイル確定時点で逐次レビュー開始前に一度だけポップアップ表示する（4.8節参照）** | 本節での追加方針（一次資料に連番チェックの規定はなし。実務上の提出漏れ・重複防止のための追加） |

証拠番号処理は必須機能ではなく、証拠ファイルを扱う場合にのみ使用するオプション機能として設計する（主張書面等には適用しない）。適用対象の判定は4.3節で自動的に行われるため、ユーザーが処理の都度手動で「これは証拠か」を判断する負担を軽減する。**ただし、号証の連番・欠番チェックは検出・警告のみのため、上記の確認原則（第4章冒頭）の対象外であり、無条件で自動実行する。**

### 4.8 レポート出力機能
処理完了後、以下を含むレポート（テキスト）を出力フォルダに生成する。

- ファイルごとの処理結果（検出事項・適用処理）
- 警告内容（用紙サイズ不一致、パスワード検出、操作制限PDF検出等）
- **墨消し完全性の検証結果**（文字情報残存の検出有無。検出があった場合は最も重要度の高い警告として先頭に表示する）
- **個人情報パターンの検出結果**（4.9節。検出があった場合は墨消し完全性の検出結果と並ぶ最重要警告として先頭付近に表示する）
- **号証の連番・欠番チェックの結果**（4.7節。欠番・重複があれば警告として表示する）
- **複数回提出を選択した場合の提出回ごとの内訳**（提出用_01／提出用_02等の各サブフォルダに含まれるファイル名・件数・合計サイズ。ユーザーが「何回目にどのファイルを提出すべきか」を一目で把握できる形式とする。**「バッチ」という用語は処理中の画面に一度も表れず分かりにくいため、レポート上では使わず「提出回」で統一する**）
- **単体ファイル200MB超過の警告（最重要警告の一つ）**（対象ファイル名、単体サイズ、「圧縮又は分割なしには提出不可能」である旨。墨消し完全性・個人情報検出結果と並び、レポート冒頭に優先表示する）

**【2026-07-21追記：画面表示の徹底。2026-07-24全面改訂】** 単体ファイル200MB超過・墨消し完全性の残存検出・個人情報パターンの検出（以上「最重要警告」）、検出のみの要修正事項（パスワード付きPDF・操作制限PDF・用紙寸法A4/A3以外・向き不一致）は、レポートファイルに記載するだけでは、ユーザーがそれを見ない限り気づけないままになる見落としの危険がある。**2026-07-21時点では書き出し完了時に画面上の集約警告ダイアログを表示していたが、2026-07-24に廃止し、逐次レビュー画面（4.7節）へ一本化した。** 理由：完了後にまとめて警告する設計は、実行前個別確認の原則（第4章冒頭）と根本的に相性が悪く、レビュー画面でチェックを外した（＝その場で検出結果を見ているはずの）項目について、完了時ダイアログに頼らなければ見落としを防げないという構造上の弱点があった。逐次レビュー画面に検出のみ・対処不可の項目を含めることで、この弱点を解消し、書き出し完了後の追加確認は不要にした。号証の連番・欠番チェックのみ複数ファイルにまたがる検出結果のため1件ずつのレビュー画面には収まらず、対象ファイル確定時点で逐次レビュー開始前に一度だけ表示する（4.7節参照）。レポートと画面表示の内容は共通のロジック（processors/report_writer.pyの`collect_critical_warnings`・`collect_check_warnings`・`format_evidence_sequence_warnings`）で生成し、両者の内容が食い違わないようにする。
- 未対応形式として除外したファイル・要変換（分類C）ファイルの一覧

### 4.9 号証整合性・個人情報検出機能【新規。2026-07-20追加】

チェック専念方針に基づく新規のチェック機能。いずれも検出・警告のみを行い、修正・削除等の実行は行わない（他のツールで対処のうえ、本ツールに再度読み込んで再検証するよう案内する）。号証の連番・欠番チェックは4.7節に記載済みのため、本節では個人情報パターンの検出のみを扱う。

| 処理 | 内容 | 根拠 |
|---|---|---|
| 個人情報パターンの検出 | PDFのテキストレイヤー及びファイル名から、正規表現により以下のパターンを検出して警告する：マイナンバー（12桁）、電話番号、メールアドレス、郵便番号＋住所らしき文字列、銀行口座番号らしき数字列、クレジットカード番号（Luhnチェック併用）。**検出のみ行い、削除・墨消しの実行はしない**（墨消しは他ツールで行い、本ツールに再度読み込んで再検証するよう案内する）。誤検出（事件番号・書証中の日付等を誤って拾う場合）があり得るため、警告文言は断定を避け「個人情報の可能性がある記載を検出しました。意図した記載か確認してください」とする。**検出パターンは設定ファイル（config.yaml）で追加・調整可能にする。** 処理はローカルの正規表現マッチングのみで行い、外部サービスへの送信は一切行わない（第5章非機能要件「完全ローカル動作」に従う） | 本節での追加方針。背景：mintsでは秘匿事項届出書面や秘匿情報入り書面を誤アップロードすると相手方から閲覧可能になり、提出後の削除は当事者側ではできないため（FAQ・マニュアル67頁）、提出前検出の価値が極めて高い |

---

## 第5 非機能要件

| 項目 | 要件 |
|---|---|
| **完全ローカル動作（最重要）** | いかなる処理段階においても外部ネットワーク通信を行わない。具体的には：(a) OCR・形式変換・画像処理等はすべてローカルにインストールしたライブラリ・実行ファイルで完結させ、クラウドAPI（OCRサービス、生成AIサービス、変換サービス等）を一切呼び出さない。(b) 利用状況の収集・エラーレポートの自動送信等のテレメトリ機能を実装しない。(c) アップデート確認等、機能上必須でないネットワークアクセスも既定で無効とする。証拠・準備書面等の機密文書が利用者のPC外に一切出ないことを保証する |
| 実行環境 | Windows想定（法律事務所の一般的なPC環境に合わせる） |
| 配布形態 | Pythonスクリプトの配布、又は実行ファイル化（要検討） |
| 処理の可逆性 | 元ファイルは変更せず、出力フォルダへの書き出しのみを行う（入力フォルダへの上書きは既定で禁止し、明示的な確認を要する） |
| パラメータ管理 | 数値上限（200MB、100文字、A4/A3寸法等）は設定ファイルで管理し、一次資料の版数を記録する（報告書第7章4節の設計方針を踏襲）。**config.yaml内のセクション順は、書き出し実行時にユーザーへの確認・チェックボックスが表示される順序（upload→evidence_number→filename→evidence_stamp、続けて自動検出・レポート表示のみのpdf・pii_detection、非対話的なloggingの順）に合わせる。書き出しフロー（app.py `_start_output_write`）の確認順序を変更した場合は、config.yamlの並び順・冒頭コメントも合わせて見直すこと** |
| ログ | 処理内容を第4.8のレポートとは別に、デバッグ用の詳細ログとして保持できるようにする |
| 原本忠実性・変更前確認の徹底 | OCR等の文書内容に関わる処理では、生成AI（LLM等）による文字起こし・補完・要約を行わない。認識系エンジン（Tesseract等）に限定し、原本と異なる内容が紛れ込むリスク（幻覚）を排除する。**さらに、ファイルの内容・体裁を変更するいかなる処理も、技術的にロスレスと判断されるものを含め、実行前に必ずユーザーの個別確認を経る（第4章冒頭の原則）。証拠としての価値低下という観点からは、情報量の実質的な喪失の有無にかかわらず、ファイルが変更されたという事実自体にリスクがあるとの理解による** |

---

## 第6 処理対象外・未対応形式の扱い

第2.1節に列挙した形式以外のファイル（例：CADファイル、圧縮ファイル、実行ファイル等）が入力フォルダに含まれていた場合、変換・処理を行わず、レポートに「未対応形式のため処理対象外」として記録するにとどめる。誤って重要なファイルを見落とすことのないよう、スキャン結果一覧（4.1）で必ず全ファイルを表示する。

---

## 第7 公式規定のない事項の扱い（提案内容の方針。実行には第4章冒頭の確認原則が別途適用される）

**【2026-07-20追記】本章が想定するグレースケール変換・dpi変更・再エンコード等の実行機能は、いずれもチェック専念方針により廃止した（4.4節・4.6節参照）。本章は廃止経緯の記録として残す。動画・音声の品質に関する検証・変換機能自体、当初から実装しておらず、本節の記載は将来の参考情報にとどまる。**

報告書第6章・第8章で「公式規定なし」と確定した事項については、ツールが**提案する**デフォルトの姿勢を次のとおりとする。**ただし、いずれの処理も、実行そのものは第4章冒頭の原則により必ずユーザーの個別確認を経る。「デフォルト」とは、確認画面上で最初に提示される推奨内容を指すのであって、無確認での自動実行を意味しない**（この点、従来の記載は「デフォルト実行」という表現により誤解を招く記載になっていたため訂正する）。

| 事項 | 既定の提案内容（実行には別途ユーザー確認を要する） | その他の選択肢 |
|---|---|---|
| カラー／グレースケール | 原本の色を保持（変更しない）ことを提案。**ラスター画像が無彩色と検出された場合は、グレースケール変換を推奨内容として提案するが、無確認では実行しない**（ロスレス最適化と評価されるが、それでも確認を要する。4.6節参照） | 有彩色画像のグレースケール変換。**サイズ削減が必要な場合、複数回提出・ファイル分割で対応できないときの選択肢としてユーザー確認を前提に実行する**（4.6節「圧縮によるサイズ削減」参照。解像度ダウンサンプリングより判読性への影響が小さいため優先） |
| スキャン解像度（dpi） | 変更しない | 指定dpiへのリサンプリング。**サイズ削減の観点ではグレースケール変換の次善策**（判読性への影響がより大きいため） |
| 動画・音声の品質（ビットレート等） | 可能な限り元品質を維持したコンテナ変換を優先 | 再エンコード時の品質指定 |

---

## 第8 実装範囲の確定（チェック専念方針）【2026-07-20全面改訂】

**設計思想（確定）**：競合ツールとの機能ギャップ分析を踏まえ、次のとおり確定する。「**頻繁に処理が必要なものだけを実装し、それ以外はチェック（検出・警告）に徹する。修正はユーザーが他のアプリで行い、本ツールに再度読み込んで再検証する。**」本ツールの価値は、変換・修復エンジンの多機能さではなく、**検証・チェックの網羅性とフォルダ単位バッチ処理**にある。シンプルさを保つことを優先する。

**v1／v2という段階分けの概念は撤廃した。** 以下が実装範囲の確定版であり、以降の版で新たな処理系機能（ファイル変換・自動修復等）を追加することは原則として想定しない。新規機能の追加を検討する場合は、まず本方針（チェック専念）に適合するか（＝発動頻度が高い、シンプルに実装できる）を確認すること。

### 支援系機能（ファイルを変更しない）

- 4.1 フォルダ選択・スキャン機能
- 4.2 ファイル状態把握機能（検出全般）
- 4.3 出力ファイル名判定機能（証拠番号パターンの判定。編集UI・自動採番は設けない〔2026-07-26改訂〕）
- 4.8 レポート出力機能

### チェック系機能（検出・警告のみ。ファイルを変更しないため確認UI原則の対象外・自動実行）

- ファイルサイズ検出（単体200MB超過の検出・警告）
- パスワード検出（ユーザーパスワードが必須で開けないPDFの検出）
- **操作制限（印刷・コピー制限）PDFの検出（4.6節・新規）**
- 用紙サイズ検出・向きの適正化警告
- 墨消し完全性の検証
- **号証の連番・欠番チェック（4.7節・新規）**
- **個人情報パターンの検出（4.9節・新規）**

### 処理系機能（ファイルを変更する。実行前に必ずユーザーの個別確認を得る）

- ファイル名整形（4.5節）
- メタデータ除去（4.5節）
- 200MB分割（複数回提出の事前仕分け・提出用_NNサブフォルダ生成。ファイル自体は変更しないため確認は不要だが、通知は必須）
- 証拠番号スタンプ（右上焼き込み・オーバーレイ合成方式・**位置調整を含む**。4.7節）
- 枝番ファイル結合（4.7節）
- 向き補正（4.6節の向き不一致に対する90°回転。PDFの/Rotate属性のみの変更で内容・画質・テキストレイヤー不変＝無損失・可逆。内容の再配置を伴うため廃止した「用紙サイズ補正〔拡大縮小配置〕」とは性質が異なる。回転方向はプレビューを見たユーザーが選択。**2026-07-25追加**。改訂履歴参照）

### 廃止した機能（保留ではなく、今後も実装しない）

以下は要件定義書の該当節に廃止経緯の記録として残すが、実装は行わない。非対応形式・要修正ファイルを検出した場合は、いずれも「他のツール（Office自体のPDFエクスポート、汎用PDF編集ソフト等）で修正・変換してから、本ツールに再度読み込んで再検証してください」という趣旨の案内に統一する。

| 機能 | 記載箇所 |
|---|---|
| 形式変換機能（DOCX/XLSX/PPTX→PDF、TIFF等→JPEG/PNG、MOV等→MP4、WAV等→MP3） | 4.4節 |
| OCR付与（テキストレイヤー付与）・テキストレイヤー削除 | 4.6節 |
| 墨消し完全性の「防止処理」の実行（選択的除去・ラスタライズ） | 4.6節（検証・検出・警告は維持） |
| 用紙サイズ補正の「実行」（拡大縮小配置） | 4.6節（検出・警告は維持） |
| 無彩色検出とグレースケール変換 | 4.6節 |
| ファイル分割・圧縮（段階的縮小） | 4.5節・4.6節 |

準備コード・スタブ・分岐・依存ライブラリ（ffmpeg、LibreOffice/COM連携、ocrmypdf等）は元々着手していないため、削除作業は発生しない（第9章参照）。

---

## 第9 使用ライブラリ

**以下はいずれもローカル環境で完結するライブラリ・ソフトウェアであり、外部サーバーとの通信を伴わないことを選定条件とする。**

| 用途 | ライブラリ |
|---|---|
| PDF生成・スタンプ（オーバーレイ合成）・結合 | pypdf、reportlab |
| PDF暗号化検出（パスワード・操作制限）・寸法検証・墨消し検証 | pikepdf、pdfplumber |
| 画像処理・Exif除去・スタンプ | Pillow |
| Office文書プロパティ読み取り（メタデータ検出のみ。PDF変換は行わない） | python-docx／openpyxl／python-pptx |
| 音声・動画タグ読み取り（メタデータ検出のみ。変換は行わない） | mutagen |
| 個人情報パターン検出 | 標準ライブラリ`re`（正規表現）。外部ライブラリ不要 |
| 設定ファイル読み込み | PyYAML |

**推移的依存（直接importはしないが同梱されるもの）**：pdfplumberの依存としてpdfminer.six（PDF解析）とpypdfium2（`page.to_image()`によるプレビューのラスタライズ）が入る。いずれもローカル完結で外部通信を伴わない（exe同梱物の把握のため明記。2026-07-26追記）。

**【2026-07-20改訂・廃止】** チェック専念方針への転換（第8章）に伴い、以下は不要となった。元々コードへの組み込みには着手していない：ocrmypdf（OCR用）、ffmpeg（動画・音声変換用）、LibreOffice／COM連携（Office→PDF変換用）。

ライブラリ選定・アップデートの各段階で、新たに追加候補となるライブラリがネットワーク通信を内包していないかを確認することを、開発プロセス上のチェック項目とする。

---

## 第10 将来検討事項（本要件定義の対象外）

- 証拠説明書（xlsx公式書式）の自動生成機能
- 証拠番号の事件単位での一元管理（複数回の処理をまたいだ通番管理）
- mints画面への直接アップロード連携（API等が公開された場合）

以上
