gbanyan 5d9404d236 Add codex GPT-5.5 round-9 final Phase 5 cross-check (post round-4)
Verdict: Minor Revision; Phase 5 panel convergence achieved.

Panel convergence audit (3/3 reviewers in Accept/Minor band):
- Gemini round-2: Accept
- Opus round-2: Minor Revision
- codex round-9 (this artifact): Minor Revision

Original Phase 5 gate ("Accept/Minor consensus from >=2 of 3
reviewers") is met. Codex recommends closing Phase 5 after two
small text patches surface in this review.

N1-N4 closure verification:
- N3 (Table XXVII numbering): CLOSED
- N4 (cross-firm hit matrix assumption disclosure): CLOSED
- N1 (Firm C denominator reconciliation): STRUCTURALLY CLOSED but
  factually WRONG — codex queried the DB and verified all 379
  mixed-firm PDFs are 1:1 Firm C/Firm D ties (not Firm C majority).
  Round-4 propagated Opus round-2's incorrect inference about
  majority firm. Script 45's np.argmax(counts) returns the
  first-sorted firm on ties; Firm C wins alphabetically.
- N2 (composition-decomposition row added): STRUCTURALLY CLOSED
  but the untested-assumption column over-attributes corroboration
  to Script 39c. Codex's read-only rerun of the jitter procedure
  produced non-Big-4 median-p range [0.3755, 1.0], not the
  manuscript's [0.71, 1.00]; the non-Big-4 per-firm jittered table
  is not emitted by Script 39c/39d reports. Recommend narrowing
  the row to evidence that IS emitted (Script 39d Big-4 per-firm
  jitter + Script 39e Big-4 pooled centred+jittered).

Round-5 patch recommendations from codex (text-only, no script
reruns):
1. §IV-M.4 line 325: replace "majority firm" with "1:1 tie-break
   to first-sorted firm" wording
2. §III-M Table XXVII row 1 assumption cell: narrow to Big-4
   jittered + centred+jittered evidence; reconcile §III lines 59
   and 382 plus Phase 4 lines 31 and 81 to match
3. Targeted grep after patch: `rg -n "majority firm |9 tools|
   nine-tool|Script 39c|jittered-dHash" paper/v4`

Splice-time mechanical strips (deferred to manuscript-master
assembly): Phase 4 draft note + close-out checklist + §III
cross-reference checklist still contain stale "nine-tool" / "9 tools"
language explicitly marked "remove before submission."

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 18:00:07 +08:00

PDF Signature Extraction System

Automated extraction of handwritten Chinese signatures from PDF documents using hybrid VLM + Computer Vision approach.

Quick Start

Step 1: Extract Pages from CSV

cd /Volumes/NV2/pdf_recognize
source venv/bin/activate
python extract_pages_from_csv.py

Step 2: Extract Signatures

python extract_signatures_hybrid.py

Documentation

Current Performance

Test Dataset: 5 PDF pages

  • Signatures expected: 10
  • Signatures found: 7
  • Precision: 100% (no false positives)
  • Recall: 70%

Key Features

Hybrid Approach: VLM name extraction + CV detection + VLM verification Name-Based: Signatures saved as signature_周寶蓮.png No False Positives: Name-specific verification filters out dates, text, stamps Duplicate Prevention: Only one signature per person Handles Both: PDFs with/without text layer

File Structure

extract_pages_from_csv.py          # Step 1: Extract pages
extract_signatures_hybrid.py       # Step 2: Extract signatures (CURRENT)
README.md                          # This file
PROJECT_DOCUMENTATION.md           # Complete documentation
README_page_extraction.md          # Page extraction guide
README_hybrid_extraction.md        # Signature extraction guide

Requirements

Data

  • Input: /Volumes/NV2/PDF-Processing/master_signatures.csv (86,073 rows)
  • PDFs: /Volumes/NV2/PDF-Processing/total-pdf/batch_*/
  • Output: /Volumes/NV2/PDF-Processing/signature-image-output/

Status

Page extraction: Tested with 100 files, working Signature extraction: Tested with 5 files, 70% recall, 100% precision Large-scale testing: Pending Full dataset (86K files): Pending

See PROJECT_DOCUMENTATION.md for complete details.

S
Description
Automated extraction of handwritten Chinese signatures from PDF documents using hybrid VLM + Computer Vision approach. 70% recall, 100% precision.
Readme 7.4 MiB
Languages
Python 100%