bbb662acd1c0ab44c71045fc0bf6905c4e7e8b96
Codex round-3 verification (commit 9e68f2e) flagged remaining items:
BLOCKER:
- Appendix A Table A.I was inside an HTML comment but visible prose at L1268
and L1275 referenced it as if it rendered. Un-commented Table A.I (same fix
pattern as Tables I-IV in round-3).
MAJOR:
- Table XXVII (diagnostic summary) appeared in §III-M at L593 before Tables
III-XXVI in §IV, breaking sequential IEEE-style numbering. Moved the table
to Appendix A as Table A.II (new §A.2 "Diagnostic Summary"). §III-M now
references "Appendix A Table A.II" instead of hosting the table inline;
§VI Conclusion contribution (8) updated similarly. Appendix A heading
generalised to "Supplementary Diagnostic Detail" with §A.1 (BD/McCrary)
and §A.2 (Diagnostic Summary).
- §III-M L614 rate-definition conflation: the sentence "per-signature and
per-document rates ($0.11$ and $0.34$ respectively under the deployed
any-pair HC + MC alarm)" mixed unit labels. Rewrote to label each rate by
its actual unit and source table: per-signature any-pair HC ICCR ($0.11$;
Table XXII) and per-document HC+MC alarm-rate ICCR ($0.34$; Table XXIII).
MINORS:
- L400 §III-L stale ref retargeted: "operational signature-level classifier
of §III-L" -> "of §III-H.1 calibrated in §III-L".
- L663 §III-L stale ref retargeted: "KDE crossover used in per-document
classification (Section III-L)" -> "(Section III-H.1)".
- L1146 Conclusion "corpus-universal" overstated generality -> "across the
tested eligible scopes" (non-Big-4 evidence is cosine-axis only, not full
calibration scope).
- L1024 Results §IV-M.4 footnote: np.argmax / np.unique implementation
detail moved to "alphabetically-ordered tie-break ... full implementation
detail in the supplementary materials" (less script-internal prose).
Artefacts:
- Combined manuscript regenerated: paper_a_v4_combined.md, 1316 lines.
- Final main-text table sequence: I, II, III, ..., XXVI (26 tables, all
sequential in rendered order). Appendix tables: A.I, A.II.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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
- PROJECT_DOCUMENTATION.md - Complete project history, all approaches tested, detailed results
- README_page_extraction.md - Page extraction documentation
- README_hybrid_extraction.md - Hybrid signature extraction 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
- Python 3.9+
- PyMuPDF, OpenCV, NumPy, Requests
- Ollama with qwen2.5vl:32b model
- Ollama instance: http://192.168.30.36:11434
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.
Description
Automated extraction of handwritten Chinese signatures from PDF documents using hybrid VLM + Computer Vision approach. 70% recall, 100% precision.
Languages
Python
100%