asyirafitri commited on
Commit
3cbcc36
·
verified ·
1 Parent(s): 71870f0

Add unified_pipeline: merged signature-verification synthetic document generator

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +233 -0
  2. unified_pipeline/.gitignore +11 -0
  3. unified_pipeline/annotations/bank_doc_01.json +35 -0
  4. unified_pipeline/annotations/bank_doc_02.json +26 -0
  5. unified_pipeline/annotations/bank_doc_03.json +53 -0
  6. unified_pipeline/annotations/bank_doc_04.json +53 -0
  7. unified_pipeline/annotations/bank_doc_05.json +53 -0
  8. unified_pipeline/annotations/bank_doc_06.json +53 -0
  9. unified_pipeline/annotations/bank_doc_07.json +44 -0
  10. unified_pipeline/annotations/bank_doc_08.json +53 -0
  11. unified_pipeline/annotations/bank_doc_09.json +44 -0
  12. unified_pipeline/configs/default.yaml +247 -0
  13. unified_pipeline/configs/examples/clean_easy.yaml +31 -0
  14. unified_pipeline/configs/examples/hard_degraded.yaml +47 -0
  15. unified_pipeline/configs/examples/single_document_demo.yaml +50 -0
  16. unified_pipeline/configs/examples/verification_cases.yaml +34 -0
  17. unified_pipeline/configs/generate.yaml +171 -0
  18. unified_pipeline/configs/procedural_templates.yaml +28 -0
  19. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-01.tif +3 -0
  20. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-02.tif +3 -0
  21. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-03.tif +3 -0
  22. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-04.tif +3 -0
  23. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-05.tif +3 -0
  24. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-06.tif +3 -0
  25. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-07.tif +3 -0
  26. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-08.tif +3 -0
  27. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-01.tif +3 -0
  28. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-02.tif +3 -0
  29. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-03.tif +3 -0
  30. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-04.tif +3 -0
  31. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-05.tif +3 -0
  32. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-06.tif +3 -0
  33. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-07.tif +3 -0
  34. unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-08.tif +3 -0
  35. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-01.tif +3 -0
  36. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-02.tif +3 -0
  37. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-03.tif +3 -0
  38. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-04.tif +3 -0
  39. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-05.tif +3 -0
  40. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-06.tif +3 -0
  41. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-07.tif +3 -0
  42. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-08.tif +3 -0
  43. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-01.tif +3 -0
  44. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-02.tif +3 -0
  45. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-03.tif +3 -0
  46. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-04.tif +3 -0
  47. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-05.tif +3 -0
  48. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-06.tif +3 -0
  49. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-07.tif +3 -0
  50. unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-08.tif +3 -0
.gitattributes CHANGED
@@ -35,3 +35,236 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  *.png filter=lfs diff=lfs merge=lfs -text
37
  *.pdf filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  *.png filter=lfs diff=lfs merge=lfs -text
37
  *.pdf filter=lfs diff=lfs merge=lfs -text
38
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-01.tif filter=lfs diff=lfs merge=lfs -text
39
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-02.tif filter=lfs diff=lfs merge=lfs -text
40
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-03.tif filter=lfs diff=lfs merge=lfs -text
41
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-04.tif filter=lfs diff=lfs merge=lfs -text
42
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-05.tif filter=lfs diff=lfs merge=lfs -text
43
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-06.tif filter=lfs diff=lfs merge=lfs -text
44
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-07.tif filter=lfs diff=lfs merge=lfs -text
45
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-08.tif filter=lfs diff=lfs merge=lfs -text
46
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-01.tif filter=lfs diff=lfs merge=lfs -text
47
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-02.tif filter=lfs diff=lfs merge=lfs -text
48
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-03.tif filter=lfs diff=lfs merge=lfs -text
49
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-04.tif filter=lfs diff=lfs merge=lfs -text
50
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-05.tif filter=lfs diff=lfs merge=lfs -text
51
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-06.tif filter=lfs diff=lfs merge=lfs -text
52
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-07.tif filter=lfs diff=lfs merge=lfs -text
53
+ unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-08.tif filter=lfs diff=lfs merge=lfs -text
54
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-01.tif filter=lfs diff=lfs merge=lfs -text
55
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-02.tif filter=lfs diff=lfs merge=lfs -text
56
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-03.tif filter=lfs diff=lfs merge=lfs -text
57
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-04.tif filter=lfs diff=lfs merge=lfs -text
58
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-05.tif filter=lfs diff=lfs merge=lfs -text
59
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-06.tif filter=lfs diff=lfs merge=lfs -text
60
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-07.tif filter=lfs diff=lfs merge=lfs -text
61
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-08.tif filter=lfs diff=lfs merge=lfs -text
62
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-01.tif filter=lfs diff=lfs merge=lfs -text
63
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-02.tif filter=lfs diff=lfs merge=lfs -text
64
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-03.tif filter=lfs diff=lfs merge=lfs -text
65
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-04.tif filter=lfs diff=lfs merge=lfs -text
66
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-05.tif filter=lfs diff=lfs merge=lfs -text
67
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-06.tif filter=lfs diff=lfs merge=lfs -text
68
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-07.tif filter=lfs diff=lfs merge=lfs -text
69
+ unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-08.tif filter=lfs diff=lfs merge=lfs -text
70
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-F-01.tif filter=lfs diff=lfs merge=lfs -text
71
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-F-02.tif filter=lfs diff=lfs merge=lfs -text
72
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-F-03.tif filter=lfs diff=lfs merge=lfs -text
73
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-F-04.tif filter=lfs diff=lfs merge=lfs -text
74
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-F-05.tif filter=lfs diff=lfs merge=lfs -text
75
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-F-06.tif filter=lfs diff=lfs merge=lfs -text
76
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-F-07.tif filter=lfs diff=lfs merge=lfs -text
77
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-F-08.tif filter=lfs diff=lfs merge=lfs -text
78
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-G-01.tif filter=lfs diff=lfs merge=lfs -text
79
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-G-02.tif filter=lfs diff=lfs merge=lfs -text
80
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-G-03.tif filter=lfs diff=lfs merge=lfs -text
81
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-G-04.tif filter=lfs diff=lfs merge=lfs -text
82
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-G-05.tif filter=lfs diff=lfs merge=lfs -text
83
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-G-06.tif filter=lfs diff=lfs merge=lfs -text
84
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-G-07.tif filter=lfs diff=lfs merge=lfs -text
85
+ unified_pipeline/data/raw/bhsig260_bengali/100/B-S-100-G-08.tif filter=lfs diff=lfs merge=lfs -text
86
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-F-01.tif filter=lfs diff=lfs merge=lfs -text
87
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-F-02.tif filter=lfs diff=lfs merge=lfs -text
88
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-F-03.tif filter=lfs diff=lfs merge=lfs -text
89
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-F-04.tif filter=lfs diff=lfs merge=lfs -text
90
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-F-05.tif filter=lfs diff=lfs merge=lfs -text
91
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-F-06.tif filter=lfs diff=lfs merge=lfs -text
92
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-F-07.tif filter=lfs diff=lfs merge=lfs -text
93
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-F-08.tif filter=lfs diff=lfs merge=lfs -text
94
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-G-01.tif filter=lfs diff=lfs merge=lfs -text
95
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-G-02.tif filter=lfs diff=lfs merge=lfs -text
96
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-G-03.tif filter=lfs diff=lfs merge=lfs -text
97
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-G-04.tif filter=lfs diff=lfs merge=lfs -text
98
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-G-05.tif filter=lfs diff=lfs merge=lfs -text
99
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-G-06.tif filter=lfs diff=lfs merge=lfs -text
100
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-G-07.tif filter=lfs diff=lfs merge=lfs -text
101
+ unified_pipeline/data/raw/bhsig260_bengali/11/B-S-11-G-08.tif filter=lfs diff=lfs merge=lfs -text
102
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-F-01.tif filter=lfs diff=lfs merge=lfs -text
103
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-F-02.tif filter=lfs diff=lfs merge=lfs -text
104
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-F-03.tif filter=lfs diff=lfs merge=lfs -text
105
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-F-04.tif filter=lfs diff=lfs merge=lfs -text
106
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-F-05.tif filter=lfs diff=lfs merge=lfs -text
107
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-F-06.tif filter=lfs diff=lfs merge=lfs -text
108
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-F-07.tif filter=lfs diff=lfs merge=lfs -text
109
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-F-08.tif filter=lfs diff=lfs merge=lfs -text
110
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-G-01.tif filter=lfs diff=lfs merge=lfs -text
111
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-G-02.tif filter=lfs diff=lfs merge=lfs -text
112
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-G-03.tif filter=lfs diff=lfs merge=lfs -text
113
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-G-04.tif filter=lfs diff=lfs merge=lfs -text
114
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-G-05.tif filter=lfs diff=lfs merge=lfs -text
115
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-G-06.tif filter=lfs diff=lfs merge=lfs -text
116
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-G-07.tif filter=lfs diff=lfs merge=lfs -text
117
+ unified_pipeline/data/raw/bhsig260_bengali/12/B-S-12-G-08.tif filter=lfs diff=lfs merge=lfs -text
118
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-F-01.tif filter=lfs diff=lfs merge=lfs -text
119
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-F-02.tif filter=lfs diff=lfs merge=lfs -text
120
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-F-03.tif filter=lfs diff=lfs merge=lfs -text
121
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-F-04.tif filter=lfs diff=lfs merge=lfs -text
122
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-F-05.tif filter=lfs diff=lfs merge=lfs -text
123
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-F-06.tif filter=lfs diff=lfs merge=lfs -text
124
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-F-07.tif filter=lfs diff=lfs merge=lfs -text
125
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-F-08.tif filter=lfs diff=lfs merge=lfs -text
126
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-G-01.tif filter=lfs diff=lfs merge=lfs -text
127
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-G-02.tif filter=lfs diff=lfs merge=lfs -text
128
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-G-03.tif filter=lfs diff=lfs merge=lfs -text
129
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-G-04.tif filter=lfs diff=lfs merge=lfs -text
130
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-G-05.tif filter=lfs diff=lfs merge=lfs -text
131
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-G-06.tif filter=lfs diff=lfs merge=lfs -text
132
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-G-07.tif filter=lfs diff=lfs merge=lfs -text
133
+ unified_pipeline/data/raw/bhsig260_bengali/13/B-S-13-G-08.tif filter=lfs diff=lfs merge=lfs -text
134
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-F-01.tif filter=lfs diff=lfs merge=lfs -text
135
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-F-02.tif filter=lfs diff=lfs merge=lfs -text
136
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-F-03.tif filter=lfs diff=lfs merge=lfs -text
137
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-F-04.tif filter=lfs diff=lfs merge=lfs -text
138
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-F-05.tif filter=lfs diff=lfs merge=lfs -text
139
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-F-06.tif filter=lfs diff=lfs merge=lfs -text
140
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-F-07.tif filter=lfs diff=lfs merge=lfs -text
141
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-F-08.tif filter=lfs diff=lfs merge=lfs -text
142
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-G-01.tif filter=lfs diff=lfs merge=lfs -text
143
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-G-02.tif filter=lfs diff=lfs merge=lfs -text
144
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-G-03.tif filter=lfs diff=lfs merge=lfs -text
145
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-G-04.tif filter=lfs diff=lfs merge=lfs -text
146
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-G-05.tif filter=lfs diff=lfs merge=lfs -text
147
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-G-06.tif filter=lfs diff=lfs merge=lfs -text
148
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-G-07.tif filter=lfs diff=lfs merge=lfs -text
149
+ unified_pipeline/data/raw/bhsig260_bengali/14/B-S-14-G-08.tif filter=lfs diff=lfs merge=lfs -text
150
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-F-01.tif filter=lfs diff=lfs merge=lfs -text
151
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-F-02.tif filter=lfs diff=lfs merge=lfs -text
152
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-F-03.tif filter=lfs diff=lfs merge=lfs -text
153
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-F-04.tif filter=lfs diff=lfs merge=lfs -text
154
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-F-05.tif filter=lfs diff=lfs merge=lfs -text
155
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-F-06.tif filter=lfs diff=lfs merge=lfs -text
156
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-F-07.tif filter=lfs diff=lfs merge=lfs -text
157
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-F-08.tif filter=lfs diff=lfs merge=lfs -text
158
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-G-01.tif filter=lfs diff=lfs merge=lfs -text
159
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-G-02.tif filter=lfs diff=lfs merge=lfs -text
160
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-G-03.tif filter=lfs diff=lfs merge=lfs -text
161
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-G-04.tif filter=lfs diff=lfs merge=lfs -text
162
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-G-05.tif filter=lfs diff=lfs merge=lfs -text
163
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-G-06.tif filter=lfs diff=lfs merge=lfs -text
164
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-G-07.tif filter=lfs diff=lfs merge=lfs -text
165
+ unified_pipeline/data/raw/bhsig260_bengali/15/B-S-15-G-08.tif filter=lfs diff=lfs merge=lfs -text
166
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-F-01.tif filter=lfs diff=lfs merge=lfs -text
167
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-F-02.tif filter=lfs diff=lfs merge=lfs -text
168
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-F-03.tif filter=lfs diff=lfs merge=lfs -text
169
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-F-04.tif filter=lfs diff=lfs merge=lfs -text
170
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-F-05.tif filter=lfs diff=lfs merge=lfs -text
171
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-F-06.tif filter=lfs diff=lfs merge=lfs -text
172
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-F-07.tif filter=lfs diff=lfs merge=lfs -text
173
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-F-08.tif filter=lfs diff=lfs merge=lfs -text
174
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-G-01.tif filter=lfs diff=lfs merge=lfs -text
175
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-G-02.tif filter=lfs diff=lfs merge=lfs -text
176
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-G-03.tif filter=lfs diff=lfs merge=lfs -text
177
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-G-04.tif filter=lfs diff=lfs merge=lfs -text
178
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-G-05.tif filter=lfs diff=lfs merge=lfs -text
179
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-G-06.tif filter=lfs diff=lfs merge=lfs -text
180
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-G-07.tif filter=lfs diff=lfs merge=lfs -text
181
+ unified_pipeline/data/raw/bhsig260_bengali/16/B-S-16-G-08.tif filter=lfs diff=lfs merge=lfs -text
182
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-F-01.tif filter=lfs diff=lfs merge=lfs -text
183
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-F-02.tif filter=lfs diff=lfs merge=lfs -text
184
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-F-03.tif filter=lfs diff=lfs merge=lfs -text
185
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-F-04.tif filter=lfs diff=lfs merge=lfs -text
186
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-F-05.tif filter=lfs diff=lfs merge=lfs -text
187
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-F-06.tif filter=lfs diff=lfs merge=lfs -text
188
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-F-07.tif filter=lfs diff=lfs merge=lfs -text
189
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-F-08.tif filter=lfs diff=lfs merge=lfs -text
190
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-G-01.tif filter=lfs diff=lfs merge=lfs -text
191
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-G-02.tif filter=lfs diff=lfs merge=lfs -text
192
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-G-03.tif filter=lfs diff=lfs merge=lfs -text
193
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-G-04.tif filter=lfs diff=lfs merge=lfs -text
194
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-G-05.tif filter=lfs diff=lfs merge=lfs -text
195
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-G-06.tif filter=lfs diff=lfs merge=lfs -text
196
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-G-07.tif filter=lfs diff=lfs merge=lfs -text
197
+ unified_pipeline/data/raw/bhsig260_bengali/17/B-S-17-G-08.tif filter=lfs diff=lfs merge=lfs -text
198
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-F-01.tif filter=lfs diff=lfs merge=lfs -text
199
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-F-02.tif filter=lfs diff=lfs merge=lfs -text
200
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-F-03.tif filter=lfs diff=lfs merge=lfs -text
201
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-F-04.tif filter=lfs diff=lfs merge=lfs -text
202
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-F-05.tif filter=lfs diff=lfs merge=lfs -text
203
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-F-06.tif filter=lfs diff=lfs merge=lfs -text
204
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-F-07.tif filter=lfs diff=lfs merge=lfs -text
205
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-F-08.tif filter=lfs diff=lfs merge=lfs -text
206
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-G-01.tif filter=lfs diff=lfs merge=lfs -text
207
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-G-02.tif filter=lfs diff=lfs merge=lfs -text
208
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-G-03.tif filter=lfs diff=lfs merge=lfs -text
209
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-G-04.tif filter=lfs diff=lfs merge=lfs -text
210
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-G-05.tif filter=lfs diff=lfs merge=lfs -text
211
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-G-06.tif filter=lfs diff=lfs merge=lfs -text
212
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-G-07.tif filter=lfs diff=lfs merge=lfs -text
213
+ unified_pipeline/data/raw/bhsig260_bengali/18/B-S-18-G-08.tif filter=lfs diff=lfs merge=lfs -text
214
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-F-01.tif filter=lfs diff=lfs merge=lfs -text
215
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-F-02.tif filter=lfs diff=lfs merge=lfs -text
216
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-F-03.tif filter=lfs diff=lfs merge=lfs -text
217
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-F-04.tif filter=lfs diff=lfs merge=lfs -text
218
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-F-05.tif filter=lfs diff=lfs merge=lfs -text
219
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-F-06.tif filter=lfs diff=lfs merge=lfs -text
220
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-F-07.tif filter=lfs diff=lfs merge=lfs -text
221
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-F-08.tif filter=lfs diff=lfs merge=lfs -text
222
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-G-01.tif filter=lfs diff=lfs merge=lfs -text
223
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-G-02.tif filter=lfs diff=lfs merge=lfs -text
224
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-G-03.tif filter=lfs diff=lfs merge=lfs -text
225
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-G-04.tif filter=lfs diff=lfs merge=lfs -text
226
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-G-05.tif filter=lfs diff=lfs merge=lfs -text
227
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-G-06.tif filter=lfs diff=lfs merge=lfs -text
228
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-G-07.tif filter=lfs diff=lfs merge=lfs -text
229
+ unified_pipeline/data/raw/bhsig260_bengali/19/B-S-19-G-08.tif filter=lfs diff=lfs merge=lfs -text
230
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-F-01.tif filter=lfs diff=lfs merge=lfs -text
231
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-F-02.tif filter=lfs diff=lfs merge=lfs -text
232
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-F-03.tif filter=lfs diff=lfs merge=lfs -text
233
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-F-04.tif filter=lfs diff=lfs merge=lfs -text
234
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-F-05.tif filter=lfs diff=lfs merge=lfs -text
235
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-F-06.tif filter=lfs diff=lfs merge=lfs -text
236
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-F-07.tif filter=lfs diff=lfs merge=lfs -text
237
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-F-08.tif filter=lfs diff=lfs merge=lfs -text
238
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-G-01.tif filter=lfs diff=lfs merge=lfs -text
239
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-G-02.tif filter=lfs diff=lfs merge=lfs -text
240
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-G-03.tif filter=lfs diff=lfs merge=lfs -text
241
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-G-04.tif filter=lfs diff=lfs merge=lfs -text
242
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-G-05.tif filter=lfs diff=lfs merge=lfs -text
243
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-G-06.tif filter=lfs diff=lfs merge=lfs -text
244
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-G-07.tif filter=lfs diff=lfs merge=lfs -text
245
+ unified_pipeline/data/raw/bhsig260_bengali/2/B-S-2-G-08.tif filter=lfs diff=lfs merge=lfs -text
246
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-F-01.tif filter=lfs diff=lfs merge=lfs -text
247
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-F-02.tif filter=lfs diff=lfs merge=lfs -text
248
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-F-03.tif filter=lfs diff=lfs merge=lfs -text
249
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-F-04.tif filter=lfs diff=lfs merge=lfs -text
250
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-F-05.tif filter=lfs diff=lfs merge=lfs -text
251
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-F-06.tif filter=lfs diff=lfs merge=lfs -text
252
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-F-07.tif filter=lfs diff=lfs merge=lfs -text
253
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-F-08.tif filter=lfs diff=lfs merge=lfs -text
254
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-G-01.tif filter=lfs diff=lfs merge=lfs -text
255
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-G-02.tif filter=lfs diff=lfs merge=lfs -text
256
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-G-03.tif filter=lfs diff=lfs merge=lfs -text
257
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-G-04.tif filter=lfs diff=lfs merge=lfs -text
258
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-G-05.tif filter=lfs diff=lfs merge=lfs -text
259
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-G-06.tif filter=lfs diff=lfs merge=lfs -text
260
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-G-07.tif filter=lfs diff=lfs merge=lfs -text
261
+ unified_pipeline/data/raw/bhsig260_bengali/20/B-S-20-G-08.tif filter=lfs diff=lfs merge=lfs -text
262
+ unified_pipeline/data/raw/bhsig260_bengali/21/B-S-21-F-01.tif filter=lfs diff=lfs merge=lfs -text
263
+ unified_pipeline/data/raw/bhsig260_bengali/21/B-S-21-F-02.tif filter=lfs diff=lfs merge=lfs -text
264
+ unified_pipeline/data/raw/bhsig260_bengali/21/B-S-21-F-03.tif filter=lfs diff=lfs merge=lfs -text
265
+ unified_pipeline/data/raw/bhsig260_bengali/21/B-S-21-F-04.tif filter=lfs diff=lfs merge=lfs -text
266
+ unified_pipeline/data/raw/bhsig260_bengali/21/B-S-21-F-05.tif filter=lfs diff=lfs merge=lfs -text
267
+ unified_pipeline/data/raw/bhsig260_bengali/21/B-S-21-F-06.tif filter=lfs diff=lfs merge=lfs -text
268
+ unified_pipeline/data/raw/bhsig260_bengali/21/B-S-21-F-07.tif filter=lfs diff=lfs merge=lfs -text
269
+ unified_pipeline/data/raw/bhsig260_bengali/21/B-S-21-F-08.tif filter=lfs diff=lfs merge=lfs -text
270
+ unified_pipeline/data/raw/bhsig260_bengali/21/B-S-21-G-01.tif filter=lfs diff=lfs merge=lfs -text
unified_pipeline/.gitignore ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ __pycache__/
2
+ *.pyc
3
+ .venv/
4
+ venv/
5
+ .pytest_cache/
6
+ *.egg-info/
7
+
8
+ output/*.png
9
+ output/*.json
10
+ output/visualizations/
11
+ !output/.gitkeep
unified_pipeline/annotations/bank_doc_01.json ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bank_doc_01",
3
+ "source_image": "templates/scanned/guarantee/bank_doc_01.png",
4
+ "document_type": "bank_letter_of_guarantee",
5
+ "pages": [
6
+ {
7
+ "page": 1,
8
+ "page_size": [
9
+ 791,
10
+ 1024
11
+ ],
12
+ "dpi": 300,
13
+ "signature_boxes": [
14
+ {
15
+ "id": "sig1",
16
+ "x1": 118,
17
+ "y1": 493,
18
+ "x2": 396,
19
+ "y2": 508,
20
+ "role": "Bank Officer",
21
+ "name": "Bank Officer"
22
+ },
23
+ {
24
+ "id": "sig2",
25
+ "x1": 118,
26
+ "y1": 700,
27
+ "x2": 404,
28
+ "y2": 715,
29
+ "role": "Notary Public",
30
+ "name": "Notary Public"
31
+ }
32
+ ]
33
+ }
34
+ ]
35
+ }
unified_pipeline/annotations/bank_doc_02.json ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bank_doc_02",
3
+ "source_image": "templates/scanned/guarantee/bank_doc_02.png",
4
+ "document_type": "bank_letter_of_guarantee",
5
+ "pages": [
6
+ {
7
+ "page": 1,
8
+ "page_size": [
9
+ 1024,
10
+ 559
11
+ ],
12
+ "dpi": 300,
13
+ "signature_boxes": [
14
+ {
15
+ "id": "sig1",
16
+ "x1": 150,
17
+ "y1": 434,
18
+ "x2": 420,
19
+ "y2": 458,
20
+ "role": "Bank Representative",
21
+ "name": "Michael Chen"
22
+ }
23
+ ]
24
+ }
25
+ ]
26
+ }
unified_pipeline/annotations/bank_doc_03.json ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bank_doc_03",
3
+ "source_image": "templates/scanned/guarantee/bank_doc_03.png",
4
+ "document_type": "deed_of_guarantee",
5
+ "pages": [
6
+ {
7
+ "page": 1,
8
+ "page_size": [
9
+ 1024,
10
+ 559
11
+ ],
12
+ "dpi": 300,
13
+ "signature_boxes": [
14
+ {
15
+ "id": "sig1",
16
+ "x1": 595,
17
+ "y1": 399,
18
+ "x2": 748,
19
+ "y2": 431,
20
+ "role": "Guarantor (Authorized Signatory)",
21
+ "name": "Guarantor"
22
+ },
23
+ {
24
+ "id": "sig2",
25
+ "x1": 805,
26
+ "y1": 399,
27
+ "x2": 955,
28
+ "y2": 431,
29
+ "role": "Bank Representative",
30
+ "name": "Lender"
31
+ }
32
+ ],
33
+ "cosmetic_fields": [
34
+ {
35
+ "field": "name_sig1",
36
+ "mode": "above_line",
37
+ "line_x": 606,
38
+ "line_y": 464,
39
+ "line_w": 136,
40
+ "box_id": "sig1"
41
+ },
42
+ {
43
+ "field": "name_sig2",
44
+ "mode": "above_line",
45
+ "line_x": 828,
46
+ "line_y": 464,
47
+ "line_w": 136,
48
+ "box_id": "sig2"
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
unified_pipeline/annotations/bank_doc_04.json ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bank_doc_04",
3
+ "source_image": "templates/scanned/loan_forms/bank_doc_04.png",
4
+ "document_type": "corporate_bank_loan_agreement",
5
+ "pages": [
6
+ {
7
+ "page": 1,
8
+ "page_size": [
9
+ 1024,
10
+ 559
11
+ ],
12
+ "dpi": 300,
13
+ "signature_boxes": [
14
+ {
15
+ "id": "sig1",
16
+ "x1": 580,
17
+ "y1": 435,
18
+ "x2": 750,
19
+ "y2": 475,
20
+ "role": "Borrower (Authorized Signatory)",
21
+ "name": "Borrower"
22
+ },
23
+ {
24
+ "id": "sig2",
25
+ "x1": 795,
26
+ "y1": 435,
27
+ "x2": 960,
28
+ "y2": 475,
29
+ "role": "Bank Representative",
30
+ "name": "Lender"
31
+ }
32
+ ],
33
+ "cosmetic_fields": [
34
+ {
35
+ "field": "name_sig1",
36
+ "mode": "above_line",
37
+ "line_x": 606,
38
+ "line_y": 482,
39
+ "line_w": 136,
40
+ "box_id": "sig1"
41
+ },
42
+ {
43
+ "field": "name_sig2",
44
+ "mode": "above_line",
45
+ "line_x": 828,
46
+ "line_y": 482,
47
+ "line_w": 136,
48
+ "box_id": "sig2"
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
unified_pipeline/annotations/bank_doc_05.json ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bank_doc_05",
3
+ "source_image": "templates/scanned/loan_forms/bank_doc_05.png",
4
+ "document_type": "corporate_bank_loan_agreement",
5
+ "pages": [
6
+ {
7
+ "page": 1,
8
+ "page_size": [
9
+ 687,
10
+ 1024
11
+ ],
12
+ "dpi": 300,
13
+ "signature_boxes": [
14
+ {
15
+ "id": "sig1",
16
+ "x1": 65,
17
+ "y1": 780,
18
+ "x2": 320,
19
+ "y2": 815,
20
+ "role": "Borrower",
21
+ "name": "Borrower"
22
+ },
23
+ {
24
+ "id": "sig2",
25
+ "x1": 370,
26
+ "y1": 780,
27
+ "x2": 625,
28
+ "y2": 815,
29
+ "role": "Authorized Signatory",
30
+ "name": "Lender"
31
+ }
32
+ ],
33
+ "cosmetic_fields": [
34
+ {
35
+ "field": "name_sig1",
36
+ "mode": "above_line",
37
+ "line_x": 72,
38
+ "line_y": 869,
39
+ "line_w": 251,
40
+ "box_id": "sig1"
41
+ },
42
+ {
43
+ "field": "name_sig2",
44
+ "mode": "above_line",
45
+ "line_x": 365,
46
+ "line_y": 869,
47
+ "line_w": 251,
48
+ "box_id": "sig2"
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
unified_pipeline/annotations/bank_doc_06.json ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bank_doc_06",
3
+ "source_image": "templates/scanned/loan_forms/bank_doc_06.png",
4
+ "document_type": "corporate_bank_loan_agreement",
5
+ "pages": [
6
+ {
7
+ "page": 1,
8
+ "page_size": [
9
+ 1024,
10
+ 559
11
+ ],
12
+ "dpi": 300,
13
+ "signature_boxes": [
14
+ {
15
+ "id": "sig1",
16
+ "x1": 90,
17
+ "y1": 421,
18
+ "x2": 345,
19
+ "y2": 433,
20
+ "role": "Borrower (Authorized Signatory)",
21
+ "name": "Borrower"
22
+ },
23
+ {
24
+ "id": "sig2",
25
+ "x1": 590,
26
+ "y1": 421,
27
+ "x2": 845,
28
+ "y2": 433,
29
+ "role": "Bank Representative",
30
+ "name": "Lender"
31
+ }
32
+ ],
33
+ "cosmetic_fields": [
34
+ {
35
+ "field": "name_sig1",
36
+ "mode": "above_line",
37
+ "line_x": 145,
38
+ "line_y": 465,
39
+ "line_w": 337,
40
+ "box_id": "sig1"
41
+ },
42
+ {
43
+ "field": "name_sig2",
44
+ "mode": "above_line",
45
+ "line_x": 621,
46
+ "line_y": 464,
47
+ "line_w": 289,
48
+ "box_id": "sig2"
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
unified_pipeline/annotations/bank_doc_07.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bank_doc_07",
3
+ "source_image": "templates/scanned/mandate/bank_doc_07.png",
4
+ "document_type": "bank_mandate_attestation",
5
+ "pages": [
6
+ {
7
+ "page": 1,
8
+ "page_size": [
9
+ 1024,
10
+ 1536
11
+ ],
12
+ "dpi": 300,
13
+ "signature_boxes": [
14
+ {
15
+ "id": "sig1",
16
+ "x1": 535,
17
+ "y1": 918,
18
+ "x2": 935,
19
+ "y2": 935,
20
+ "role": "Account Holder",
21
+ "name": "Account Holder"
22
+ },
23
+ {
24
+ "id": "sig2",
25
+ "x1": 345,
26
+ "y1": 973,
27
+ "x2": 700,
28
+ "y2": 990,
29
+ "role": "Bank Manager",
30
+ "name": "Bank Manager"
31
+ }
32
+ ],
33
+ "cosmetic_fields": [
34
+ {
35
+ "field": "name",
36
+ "mode": "above_line",
37
+ "line_x": 308,
38
+ "line_y": 516,
39
+ "line_w": 309
40
+ }
41
+ ]
42
+ }
43
+ ]
44
+ }
unified_pipeline/annotations/bank_doc_08.json ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bank_doc_08",
3
+ "source_image": "templates/scanned/mandate/bank_doc_08.png",
4
+ "document_type": "bank_account_verification_mandate",
5
+ "pages": [
6
+ {
7
+ "page": 1,
8
+ "page_size": [
9
+ 1024,
10
+ 1536
11
+ ],
12
+ "dpi": 300,
13
+ "signature_boxes": [
14
+ {
15
+ "id": "sig1",
16
+ "x1": 345,
17
+ "y1": 672,
18
+ "x2": 495,
19
+ "y2": 696,
20
+ "role": "Account Holder",
21
+ "name": "Account Holder"
22
+ },
23
+ {
24
+ "id": "sig2",
25
+ "x1": 685,
26
+ "y1": 568,
27
+ "x2": 935,
28
+ "y2": 590,
29
+ "role": "Bank Manager",
30
+ "name": "Bank Manager"
31
+ }
32
+ ],
33
+ "cosmetic_fields": [
34
+ {
35
+ "field": "name_sig1",
36
+ "mode": "above_line",
37
+ "line_x": 308,
38
+ "line_y": 388,
39
+ "line_w": 169,
40
+ "box_id": "sig1"
41
+ },
42
+ {
43
+ "field": "name_sig2",
44
+ "mode": "above_line",
45
+ "line_x": 748,
46
+ "line_y": 463,
47
+ "line_w": 170,
48
+ "box_id": "sig2"
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
unified_pipeline/annotations/bank_doc_09.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "bank_doc_09",
3
+ "source_image": "templates/scanned/mandate/bank_doc_09.png",
4
+ "document_type": "corporate_account_opening_mandate",
5
+ "pages": [
6
+ {
7
+ "page": 1,
8
+ "page_size": [
9
+ 687,
10
+ 1024
11
+ ],
12
+ "dpi": 300,
13
+ "signature_boxes": [
14
+ {
15
+ "id": "sig1",
16
+ "x1": 90,
17
+ "y1": 797,
18
+ "x2": 315,
19
+ "y2": 832,
20
+ "role": "First Authorised Signatory",
21
+ "name": "First Authorised Signatory"
22
+ },
23
+ {
24
+ "id": "sig2",
25
+ "x1": 350,
26
+ "y1": 797,
27
+ "x2": 575,
28
+ "y2": 832,
29
+ "role": "Second Authorised Signatory",
30
+ "name": "Second Authorised Signatory"
31
+ }
32
+ ],
33
+ "cosmetic_fields": [
34
+ {
35
+ "field": "company_name",
36
+ "mode": "below_line",
37
+ "line_x": 74,
38
+ "line_y": 164,
39
+ "line_w": 303
40
+ }
41
+ ]
42
+ }
43
+ ]
44
+ }
unified_pipeline/configs/default.yaml ADDED
@@ -0,0 +1,247 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Base configuration for the synthetic signed bank document generator.
2
+ #
3
+ # This file defines every default value used by src.config.schema.PipelineConfig.
4
+ # User configs (see configs/generate.yaml, configs/examples/*.yaml) are merged
5
+ # on top of this file, so they only need to specify what they want to change.
6
+ #
7
+ # Any numeric placement/augmentation "strength"-like value may be given either
8
+ # as a fixed scalar (e.g. `0.4`) or as a range (e.g. `{min: 0.2, max: 0.6}`),
9
+ # which is resolved by a seeded RNG independently for every generated sample.
10
+
11
+ seed: 1234
12
+
13
+ paths:
14
+ image_dir: templates/scanned
15
+ dataset_dir: data/raw/cedar
16
+ annotations_dir: annotations
17
+ output_dir: output
18
+ cache_dir: templates/procedural
19
+ # Additive signature sources merged into the same SignatureDataset (see
20
+ # src/signatures/signature_dataset.py). Copied into data/raw/ so this
21
+ # repo is self-contained (a standalone zip needs no sibling checkouts) --
22
+ # BHSig260 is capped to 8 genuine + 8 forged samples per writer (full
23
+ # archives are ~3.8GB combined; see unified_pipeline/README.md for the
24
+ # uncapped source location if you need the full archives).
25
+ signet_dir: data/raw/signet
26
+ gpds_dir: null # not wired into the live generation path, excluded (see README)
27
+ bhsig260_hindi_dir: data/raw/bhsig260_hindi
28
+ bhsig260_bengali_dir: data/raw/bhsig260_bengali
29
+ # "both" by default, so a plain `python main.py` with no flags shows
30
+ # both template families, not just one. The one caveat: difficulty
31
+ # calibration (below) is a single global profile
32
+ # regardless of which provider a given sample lands on -- see README's
33
+ # "Difficulty calibration profiles" section. Override with
34
+ # `--set paths.template_provider=scanned` (or `procedural`) for a
35
+ # single-family batch.
36
+ template_provider: both
37
+ # Nothing excluded -- every discovered template is in the pool. See
38
+ # TemplateLoader's excluded_ids param / paths.excluded_template_ids
39
+ # if a template ever needs to be pulled (id-stable: excluding one
40
+ # doesn't renumber any other template's id).
41
+ excluded_template_ids: []
42
+
43
+ generation:
44
+ count: 10
45
+ workers: 1
46
+ save_visualization: false
47
+ overwrite: false
48
+ run_validation: true
49
+ start_index: 1
50
+ filename_prefix: case
51
+ filename_digits: 6
52
+
53
+ document:
54
+ template: null # null = pick uniformly at random (deterministically, via seed)
55
+ page: null # null = use the template's first page
56
+ # On by default -- fills a name/company-name field on both scanned and
57
+ # procedural templates so a generated batch doesn't look obviously
58
+ # synthetic (empty "Name of Account Holder:" etc. next to a real
59
+ # signature). See src/cosmetics/cosmetic_fields.py (procedural, full
60
+ # field set) and src/cosmetics/scanned_cosmetic_fields.py (scanned,
61
+ # CV-detected name field -- 7 of 9 templates; the other 2 are stock
62
+ # photos with no genuine blank field to fill).
63
+ enable_cosmetic_fields: true
64
+
65
+ signer:
66
+ name: null # null = generate a deterministic synthetic name
67
+ role: null # null = use the signature box's annotated role
68
+
69
+ signature_selection:
70
+ source_filter: genuine # genuine | forged | any
71
+ signature_id: null # null = pick uniformly at random from the filtered pool
72
+
73
+ placement:
74
+ x_offset: 0.0
75
+ y_offset: 0.0
76
+ rotation_deg:
77
+ min: -4.0
78
+ max: 4.0
79
+ scale_factor:
80
+ min: 0.78
81
+ max: 0.95
82
+ anchor_point: center
83
+ margin: 0.08
84
+ misplacement_probability: 0.12
85
+ misplacement_strength: 0.35
86
+ allow_partial_outside: false
87
+
88
+ rendering:
89
+ blend_mode: multiply
90
+ ink_opacity:
91
+ min: 0.75
92
+ max: 0.95
93
+ blur_sigma:
94
+ min: 0.15
95
+ max: 0.55
96
+ feather_px:
97
+ min: 0.5
98
+ max: 1.8
99
+ scanner_noise: 0.02
100
+ anti_alias: true
101
+
102
+ augmentation:
103
+ rotation:
104
+ enabled: false
105
+ strength: 0.0
106
+ probability: 0.0
107
+ seed: null
108
+
109
+ stroke_dilation:
110
+ enabled: false
111
+ strength: 0.2
112
+ probability: 0.25
113
+ seed: null
114
+
115
+ motion_blur:
116
+ enabled: false
117
+ strength: 0.2
118
+ probability: 0.15
119
+ seed: null
120
+
121
+ gaussian_blur:
122
+ enabled: true
123
+ strength: 0.15
124
+ probability: 0.3
125
+ seed: null
126
+
127
+ perspective:
128
+ enabled: false
129
+ strength: 0.1
130
+ probability: 0.1
131
+ seed: null
132
+
133
+ scanner_noise:
134
+ enabled: true
135
+ strength: 0.06
136
+ probability: 1.0
137
+ seed: null
138
+
139
+ salt_pepper:
140
+ enabled: false
141
+ strength: 0.03
142
+ probability: 0.15
143
+ seed: null
144
+
145
+ jpeg_compression:
146
+ enabled: true
147
+ strength: 0.3
148
+ probability: 0.5
149
+ seed: null
150
+ min_quality: 35
151
+ max_quality: 90
152
+
153
+ contrast:
154
+ enabled: true
155
+ strength: 0.15
156
+ probability: 0.4
157
+ seed: null
158
+
159
+ gamma:
160
+ enabled: false
161
+ strength: 0.15
162
+ probability: 0.2
163
+ seed: null
164
+
165
+ coffee_stain:
166
+ enabled: false
167
+ strength: 0.4
168
+ probability: 0.1
169
+ seed: null
170
+
171
+ stain:
172
+ enabled: false
173
+ strength: 0.4
174
+ probability: 0.1
175
+ seed: null
176
+ type: random
177
+
178
+ shadow:
179
+ enabled: true
180
+ strength: 0.35
181
+ probability: 0.4
182
+ seed: null
183
+ type: random
184
+
185
+ crumple:
186
+ enabled: false
187
+ strength: 0.2
188
+ probability: 0.15
189
+ seed: null
190
+ wrinkle_density: 0.4
191
+
192
+ discoloration:
193
+ enabled: true
194
+ strength: 0.2
195
+ probability: 0.5
196
+ seed: null
197
+ tone: random
198
+
199
+ page_tilt:
200
+ enabled: true
201
+ strength: 0.3
202
+ probability: 0.3
203
+ seed: null
204
+
205
+ dust:
206
+ enabled: false
207
+ strength: 0.2
208
+ probability: 0.2
209
+ seed: null
210
+
211
+ scanner_streaks:
212
+ enabled: false
213
+ strength: 0.2
214
+ probability: 0.1
215
+ seed: null
216
+
217
+ ink_fading:
218
+ enabled: false
219
+ strength: 0.3
220
+ probability: 0.2
221
+ seed: null
222
+
223
+ ink_bleed:
224
+ enabled: false
225
+ strength: 0.25
226
+ probability: 0.15
227
+ seed: null
228
+
229
+ quality:
230
+ case_type: null
231
+ notes: null
232
+ scanner_quality: 0.85
233
+ paper_quality: 0.85
234
+ render_quality: 0.85
235
+
236
+ difficulty:
237
+ misplacement: 0.35
238
+ whitespace: 0.20
239
+ faintness: 0.20
240
+ smallness: 0.15
241
+ low_texture: 0.10
242
+ easy_threshold: 0.33
243
+ hard_threshold: 0.66
244
+
245
+ validation:
246
+ strict: false
247
+ max_coordinate_epsilon: 0.5
unified_pipeline/configs/examples/clean_easy.yaml ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # A "mostly easy" dataset preset: well-centered signatures, minimal
2
+ # degradation. Useful for a sanity-check baseline or an "easy" evaluation
3
+ # split.
4
+ #
5
+ # python main.py --config configs/examples/clean_easy.yaml --count 500
6
+
7
+ seed: 1000
8
+
9
+ generation:
10
+ count: 500
11
+ workers: 4
12
+
13
+ placement:
14
+ scale_factor: { min: 0.85, max: 0.98 }
15
+ rotation_deg: { min: -1.5, max: 1.5 }
16
+ margin: 0.1
17
+ misplacement_probability: 0.0
18
+ allow_partial_outside: false
19
+
20
+ rendering:
21
+ ink_opacity: { min: 0.85, max: 0.98 }
22
+ blur_sigma: { min: 0.1, max: 0.25 }
23
+ scanner_noise: 0.01
24
+
25
+ augmentation:
26
+ gaussian_blur: { enabled: false }
27
+ shadow: { enabled: false }
28
+ discoloration: { enabled: false }
29
+ page_tilt: { enabled: true, strength: 0.1, probability: 0.15 }
30
+ scanner_noise: { enabled: true, strength: 0.02, probability: 1.0 }
31
+ jpeg_compression: { enabled: true, strength: 0.15, probability: 0.3, min_quality: 80, max_quality: 95 }
unified_pipeline/configs/examples/hard_degraded.yaml ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # A "mostly hard" dataset preset: frequent misplacement, faint ink, heavy
2
+ # scanner/paper degradation. Useful for stress-testing a downstream
3
+ # detector/verifier or building a "hard" evaluation split.
4
+ #
5
+ # python main.py --config configs/examples/hard_degraded.yaml --count 500
6
+
7
+ seed: 9001
8
+
9
+ generation:
10
+ count: 500
11
+ workers: 4
12
+
13
+ quality:
14
+ case_type: "1d"
15
+ notes: "low-quality scan, batch 9001"
16
+
17
+ placement:
18
+ scale_factor: { min: 0.35, max: 0.7 }
19
+ rotation_deg: { min: -12.0, max: 12.0 }
20
+ margin: 0.04
21
+ misplacement_probability: 0.45
22
+ misplacement_strength: { min: 0.3, max: 0.8 }
23
+ allow_partial_outside: true
24
+
25
+ rendering:
26
+ ink_opacity: { min: 0.35, max: 0.65 }
27
+ blur_sigma: { min: 0.6, max: 1.4 }
28
+ feather_px: { min: 1.5, max: 3.0 }
29
+ scanner_noise: 0.05
30
+
31
+ augmentation:
32
+ ink_fading: { enabled: true, strength: { min: 0.4, max: 0.8 }, probability: 0.5 }
33
+ motion_blur: { enabled: true, strength: { min: 0.3, max: 0.6 }, probability: 0.3 }
34
+ perspective: { enabled: true, strength: { min: 0.15, max: 0.3 }, probability: 0.3 }
35
+ coffee_stain: { enabled: true, strength: { min: 0.4, max: 0.8 }, probability: 0.25 }
36
+ stain: { enabled: true, strength: { min: 0.4, max: 0.8 }, probability: 0.3, type: random }
37
+ shadow: { enabled: true, strength: { min: 0.5, max: 0.9 }, probability: 0.6, type: random }
38
+ crumple: { enabled: true, strength: { min: 0.4, max: 0.8 }, probability: 0.4 }
39
+ discoloration: { enabled: true, strength: { min: 0.4, max: 0.7 }, probability: 0.7, tone: random }
40
+ page_tilt: { enabled: true, strength: { min: 0.5, max: 1.0 }, probability: 0.5 }
41
+ dust: { enabled: true, strength: { min: 0.3, max: 0.7 }, probability: 0.4 }
42
+ scanner_streaks: { enabled: true, strength: { min: 0.3, max: 0.6 }, probability: 0.3 }
43
+ salt_pepper: { enabled: true, strength: { min: 0.03, max: 0.09 }, probability: 0.35 }
44
+ jpeg_compression: { enabled: true, strength: 0.7, probability: 0.7, min_quality: 20, max_quality: 55 }
45
+
46
+ validation:
47
+ strict: false
unified_pipeline/configs/examples/single_document_demo.yaml ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Demonstrates every "single value or range" knob on one fixed template with
2
+ # a fixed signer identity -- handy for iterating on how one specific
3
+ # document/box combination looks before scaling up to a full batch run.
4
+ #
5
+ # python main.py --config configs/examples/single_document_demo.yaml --count 1
6
+
7
+ seed: 4242
8
+
9
+ document:
10
+ template: bank_doc_03
11
+
12
+ signer:
13
+ name: Jane Doe
14
+ role: Branch Manager
15
+
16
+ signature_selection:
17
+ source_filter: genuine
18
+
19
+ placement:
20
+ scale_factor: 0.84
21
+ rotation_deg: -3.0
22
+ x_offset: 8.0
23
+ y_offset: -4.0
24
+ misplacement_probability: 0.32
25
+
26
+ generation:
27
+ count: 1
28
+ save_visualization: true
29
+
30
+ augmentation:
31
+ coffee_stain:
32
+ enabled: true
33
+ strength: 0.42
34
+ probability: 1.0
35
+
36
+ shadow:
37
+ enabled: true
38
+ strength: 0.55
39
+ probability: 1.0
40
+ type: corner
41
+
42
+ crumple:
43
+ enabled: true
44
+ strength: 0.18
45
+ probability: 1.0
46
+
47
+ scanner_noise:
48
+ enabled: true
49
+ strength: 0.06
50
+ probability: 1.0
unified_pipeline/configs/examples/verification_cases.yaml ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Signature-verification test-case generation. Set quality.case_type to one
2
+ # of the 12 codes below to switch GeneratorContext into scenario-driven
3
+ # generation: it renders the described scenario and stamps the sample's
4
+ # metadata `verification` block with the matching ground-truth verdict/
5
+ # reject_code. Left unset (the default), generation is completely unaffected.
6
+ #
7
+ # python main.py --config configs/examples/verification_cases.yaml \
8
+ # --set quality.case_type=3a --count 10
9
+ #
10
+ # For "1d" (correct signer, but the scan itself is degraded) use
11
+ # configs/examples/hard_degraded.yaml instead -- it already sets
12
+ # `quality.case_type: "1d"` plus the matching degraded-scan overrides; this
13
+ # file's job is everything else, where a clean/legible scan is expected.
14
+ #
15
+ # | code | scenario | verdict | reject_code |
16
+ # |------|------------------------------------------------------|---------|-------------------------|
17
+ # | 1a | Correct signer signs normally | PASS | - |
18
+ # | 1b | Correct signer, natural pen variation | PASS | - |
19
+ # | 1c | Multi-signer form, both sign correctly | PASS | - |
20
+ # | 1d | Correct signer, scan degraded (see hard_degraded.yaml)| PASS | - |
21
+ # | 2a | Box left completely blank | REJECT | NO_SIGNATURE |
22
+ # | 2b | Printed/typed name only, no handwriting | REJECT | NO_SIGNATURE |
23
+ # | 3a | Wrong real person signs the box | REJECT | IDENTITY_MISMATCH |
24
+ # | 3b | Skilled-forgery sample used | REJECT | IDENTITY_MISMATCH |
25
+ # | 4a | Authorized signer, but wrong role's box | REJECT | ROLE_MISMATCH |
26
+ # | 4b | Signer from a different form entirely | REJECT | ROLE_MISMATCH |
27
+ # | 5a | Required signer's box left empty | REJECT | REQUIRED_SIGNER_ABSENT |
28
+ # | 5b | Someone else signs in the required signer's place | REJECT | REQUIRED_SIGNER_ABSENT |
29
+
30
+ quality:
31
+ case_type: "1a" # <- override with --set quality.case_type=<code>
32
+
33
+ validation:
34
+ strict: false
unified_pipeline/configs/generate.yaml ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Example large-batch dataset generation config.
2
+ #
3
+ # Merged on top of configs/default.yaml. Only values that differ from the
4
+ # defaults need to be listed here. Run with:
5
+ #
6
+ # python main.py --config configs/generate.yaml --count 10000
7
+ #
8
+ # (--count on the command line overrides generation.count below.)
9
+
10
+ seed: 20240601
11
+
12
+ paths:
13
+ output_dir: output
14
+
15
+ generation:
16
+ count: 2000
17
+ workers: 4
18
+ save_visualization: false
19
+ overwrite: false
20
+ run_validation: true
21
+
22
+ # document.template left as null -> every sample independently and
23
+ # deterministically picks one of the 9 discovered templates.
24
+ document:
25
+ template: null
26
+
27
+ # signer.name/role left as null -> a synthetic name is generated per sample
28
+ # and the role is taken from the chosen signature box's annotation.
29
+ signer:
30
+ name: null
31
+ role: null
32
+
33
+ signature_selection:
34
+ source_filter: genuine
35
+
36
+ placement:
37
+ scale_factor:
38
+ min: 0.75
39
+ max: 0.98
40
+ rotation_deg:
41
+ min: -6.0
42
+ max: 6.0
43
+ margin: 0.07
44
+ misplacement_probability: 0.15
45
+ misplacement_strength:
46
+ min: 0.15
47
+ max: 0.5
48
+ allow_partial_outside: true
49
+
50
+ rendering:
51
+ blend_mode: multiply
52
+ ink_opacity:
53
+ min: 0.7
54
+ max: 0.97
55
+ blur_sigma:
56
+ min: 0.15
57
+ max: 0.6
58
+ feather_px:
59
+ min: 0.4
60
+ max: 2.0
61
+ scanner_noise: 0.02
62
+
63
+ augmentation:
64
+ stroke_dilation:
65
+ enabled: true
66
+ strength: { min: 0.1, max: 0.35 }
67
+ probability: 0.2
68
+
69
+ gaussian_blur:
70
+ enabled: true
71
+ strength: { min: 0.05, max: 0.3 }
72
+ probability: 0.3
73
+
74
+ motion_blur:
75
+ enabled: true
76
+ strength: { min: 0.1, max: 0.35 }
77
+ probability: 0.12
78
+
79
+ ink_fading:
80
+ enabled: true
81
+ strength: { min: 0.1, max: 0.5 }
82
+ probability: 0.2
83
+
84
+ ink_bleed:
85
+ enabled: true
86
+ strength: { min: 0.1, max: 0.4 }
87
+ probability: 0.15
88
+
89
+ perspective:
90
+ enabled: true
91
+ strength: { min: 0.05, max: 0.2 }
92
+ probability: 0.12
93
+
94
+ contrast:
95
+ enabled: true
96
+ strength: { min: 0.05, max: 0.3 }
97
+ probability: 0.4
98
+
99
+ gamma:
100
+ enabled: true
101
+ strength: { min: 0.05, max: 0.25 }
102
+ probability: 0.2
103
+
104
+ coffee_stain:
105
+ enabled: true
106
+ strength: { min: 0.2, max: 0.6 }
107
+ probability: 0.08
108
+
109
+ stain:
110
+ enabled: true
111
+ strength: { min: 0.2, max: 0.6 }
112
+ probability: 0.1
113
+ type: random
114
+
115
+ shadow:
116
+ enabled: true
117
+ strength: { min: 0.2, max: 0.6 }
118
+ probability: 0.35
119
+ type: random
120
+
121
+ crumple:
122
+ enabled: true
123
+ strength: { min: 0.1, max: 0.4 }
124
+ probability: 0.12
125
+ wrinkle_density: { min: 0.2, max: 0.7 }
126
+
127
+ discoloration:
128
+ enabled: true
129
+ strength: { min: 0.1, max: 0.4 }
130
+ probability: 0.45
131
+ tone: random
132
+
133
+ page_tilt:
134
+ enabled: true
135
+ strength: { min: 0.1, max: 0.5 }
136
+ probability: 0.3
137
+
138
+ dust:
139
+ enabled: true
140
+ strength: { min: 0.1, max: 0.4 }
141
+ probability: 0.2
142
+
143
+ scanner_streaks:
144
+ enabled: true
145
+ strength: { min: 0.1, max: 0.35 }
146
+ probability: 0.1
147
+
148
+ scanner_noise:
149
+ enabled: true
150
+ strength: { min: 0.02, max: 0.1 }
151
+ probability: 1.0
152
+
153
+ salt_pepper:
154
+ enabled: true
155
+ strength: { min: 0.01, max: 0.06 }
156
+ probability: 0.15
157
+
158
+ jpeg_compression:
159
+ enabled: true
160
+ strength: { min: 0.2, max: 0.6 }
161
+ probability: 0.5
162
+ min_quality: 40
163
+ max_quality: 92
164
+
165
+ quality:
166
+ scanner_quality: { min: 0.6, max: 0.98 }
167
+ paper_quality: { min: 0.6, max: 0.98 }
168
+ render_quality: { min: 0.6, max: 0.98 }
169
+
170
+ validation:
171
+ strict: false
unified_pipeline/configs/procedural_templates.yaml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Procedural-template profile -- switches the document source from scanned
2
+ # photos (the default) to matplotlib-drawn documents ported from
3
+ # projectA/utils/templatemaker.py (see src/templates/procedural_template_provider.py).
4
+ #
5
+ # The difficulty smallness/faintness reference constants are also
6
+ # recalibrated here, matching projectA's own empirical finding: real
7
+ # signature ink on these procedural templates is much smaller/lighter
8
+ # relative to page area than the deck's generic literal constants assume
9
+ # (see projectA/utils/difficulty_score.py's calibration comment, and
10
+ # `unified_pipeline/README.md`). This profile is what makes "easy" reachable
11
+ # for a signed (non-blank) case on procedural templates the way it is on
12
+ # projectA today -- the scanned-template default profile deliberately keeps
13
+ # the deck's literal constants, since that pipeline's own measurements
14
+ # didn't show the same mismatch.
15
+ #
16
+ # Usage: python main.py --config configs/procedural_templates.yaml --count 20
17
+ # python main.py --set paths.template_provider=procedural --set difficulty.smallness_reference_area_ratio=0.003 ... (equivalent, inline)
18
+
19
+ paths:
20
+ template_provider: procedural
21
+
22
+ document:
23
+ enable_cosmetic_fields: true
24
+
25
+ difficulty:
26
+ smallness_reference_area_ratio: 0.003
27
+ faintness_dark_ref: 184.0
28
+ faintness_light_ref: 220.0
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-01.tif ADDED

Git LFS Details

  • SHA256: 12175e0f98367efc41609ebc8e696e5463f00d1fa1d5fe074c36f6572663eeae
  • Pointer size: 131 Bytes
  • Size of remote file: 262 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-02.tif ADDED

Git LFS Details

  • SHA256: e76bee5c0c98778d95b51cd4024b1e3df016e0ecaff7914aab2343ba868a4e96
  • Pointer size: 131 Bytes
  • Size of remote file: 276 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-03.tif ADDED

Git LFS Details

  • SHA256: c22a4193a7464d05bdb7fc67b4d81911d44775e87654a43c46b95d01d096b8b9
  • Pointer size: 131 Bytes
  • Size of remote file: 265 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-04.tif ADDED

Git LFS Details

  • SHA256: d77216080927b5b25e1bb9e563f2ec39ee348e89d0ab87888895fb091b063d11
  • Pointer size: 131 Bytes
  • Size of remote file: 267 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-05.tif ADDED

Git LFS Details

  • SHA256: 0aac4938164c7ad97f802030dec0eb1bd9ce86a894fa33a21a02a5de8dcbcf85
  • Pointer size: 131 Bytes
  • Size of remote file: 281 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-06.tif ADDED

Git LFS Details

  • SHA256: 8b944dc60acdec426eeeb7617d9e82088867569e4905e1204f34a06bbeb48e7a
  • Pointer size: 131 Bytes
  • Size of remote file: 264 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-07.tif ADDED

Git LFS Details

  • SHA256: fa809649ae8b44579f1a34a7131214710db050fa6dd489f8fd5a935c5d84454b
  • Pointer size: 131 Bytes
  • Size of remote file: 265 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-F-08.tif ADDED

Git LFS Details

  • SHA256: e92171646afb2ff869dd8d5427c1f212a58c82cceb9e331927836299802ae8ba
  • Pointer size: 131 Bytes
  • Size of remote file: 279 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-01.tif ADDED

Git LFS Details

  • SHA256: 632238a5e8ec80954747f24c17fd957a6a9256c28eba12774cdc5f38a8692c26
  • Pointer size: 131 Bytes
  • Size of remote file: 299 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-02.tif ADDED

Git LFS Details

  • SHA256: 583a4bb35f1d51d3441778801a0987819dbbc09be412f6871b34db4d5c2f6914
  • Pointer size: 131 Bytes
  • Size of remote file: 288 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-03.tif ADDED

Git LFS Details

  • SHA256: 5a34daa8b2028dd7482e8cc08dc214f361d824dc28076077b6db886eddc09f86
  • Pointer size: 131 Bytes
  • Size of remote file: 290 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-04.tif ADDED

Git LFS Details

  • SHA256: 0ab606a27b0080c56659c81e5fa9c6cac7f80000a6fd6f08c365774b0c201600
  • Pointer size: 131 Bytes
  • Size of remote file: 302 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-05.tif ADDED

Git LFS Details

  • SHA256: f6717f8aa0d743f4373dc5808d4dda75669b7d683e02abeeabdfa5ee885d46fb
  • Pointer size: 131 Bytes
  • Size of remote file: 291 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-06.tif ADDED

Git LFS Details

  • SHA256: 82d35cec8b73b60d497cad07ae6ffd4e18c2d88e9c332f4d0e9be0668a216bb5
  • Pointer size: 131 Bytes
  • Size of remote file: 293 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-07.tif ADDED

Git LFS Details

  • SHA256: 111238deaf05491f644f83835a2bdb6a59dfaef7f75c5f5b363afcf2c3b7bbe1
  • Pointer size: 131 Bytes
  • Size of remote file: 302 kB
unified_pipeline/data/raw/bhsig260_bengali/1/B-S-1-G-08.tif ADDED

Git LFS Details

  • SHA256: d612ed5797d86cf4b0fdb403a5e35c737f48c62b39b3ef59af8598788b10476d
  • Pointer size: 131 Bytes
  • Size of remote file: 292 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-01.tif ADDED

Git LFS Details

  • SHA256: ffe838f4406d9936fe853fa2a77907a843d6cf081fcd4fe9a270713df7872c78
  • Pointer size: 131 Bytes
  • Size of remote file: 281 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-02.tif ADDED

Git LFS Details

  • SHA256: 4115132af8dab75902910b034097b4bf23e94121bdc729204f23f4ac44c28597
  • Pointer size: 131 Bytes
  • Size of remote file: 267 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-03.tif ADDED

Git LFS Details

  • SHA256: 4b60118696502a85cb4a0b12372db15e9312754c5fbda5dd1058dba32ab91cf2
  • Pointer size: 131 Bytes
  • Size of remote file: 267 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-04.tif ADDED

Git LFS Details

  • SHA256: 43a4441dcf2f3d477b86fa84772b4dfa7518829618902860f4b88df085c1ebf3
  • Pointer size: 131 Bytes
  • Size of remote file: 280 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-05.tif ADDED

Git LFS Details

  • SHA256: 3ad26341c77c9687f3e95d2d11ac2aa63415827177e471abbb72281a1f3a5fd2
  • Pointer size: 131 Bytes
  • Size of remote file: 266 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-06.tif ADDED

Git LFS Details

  • SHA256: d6854dd12bc8f47ab7b9475020cc9b6634928bf98412c684ff19d787f71904a2
  • Pointer size: 131 Bytes
  • Size of remote file: 266 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-07.tif ADDED

Git LFS Details

  • SHA256: 63da330e46ded009fbba5befe5e190fb4d9d593b9e67195edeb8098bb84f0ad7
  • Pointer size: 131 Bytes
  • Size of remote file: 280 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-F-08.tif ADDED

Git LFS Details

  • SHA256: ade646632ed91e3a5392b75ebac8610cfe1730110f7a207f34217e0a3721c17a
  • Pointer size: 131 Bytes
  • Size of remote file: 266 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-01.tif ADDED

Git LFS Details

  • SHA256: 7c50871c5968d3097a8e088c048eae84feeca5fec9a53575c8ea1ec668478494
  • Pointer size: 131 Bytes
  • Size of remote file: 281 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-02.tif ADDED

Git LFS Details

  • SHA256: 41445fdee343996958c1fe89c6dddd4a85c337f4c1a4e2555d02b3d6f54d1cb9
  • Pointer size: 131 Bytes
  • Size of remote file: 267 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-03.tif ADDED

Git LFS Details

  • SHA256: 28703ff37254e728f7c463d7b6cf805bee2dbbca1adf4a71d56e275586c28a6b
  • Pointer size: 131 Bytes
  • Size of remote file: 267 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-04.tif ADDED

Git LFS Details

  • SHA256: 02c89ac9d2dc60d0fd4d4ae2e6942d7ff2cd7ee7f541797af3e18399eb7271be
  • Pointer size: 131 Bytes
  • Size of remote file: 280 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-05.tif ADDED

Git LFS Details

  • SHA256: c2e152356fabbf8fb057aff8999d567b70db9be8c6e20525369455d1d3cda7bf
  • Pointer size: 131 Bytes
  • Size of remote file: 266 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-06.tif ADDED

Git LFS Details

  • SHA256: 447946ac1453229160e78dcd9c13e0029fd0e00a7e1be0e466dafa3c049ee643
  • Pointer size: 131 Bytes
  • Size of remote file: 266 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-07.tif ADDED

Git LFS Details

  • SHA256: 87090652b0c2e5933f4cc6fe96a4a2b3e6c1155c2a1c5c7f8b48345c8c350045
  • Pointer size: 131 Bytes
  • Size of remote file: 280 kB
unified_pipeline/data/raw/bhsig260_bengali/10/B-S-10-G-08.tif ADDED

Git LFS Details

  • SHA256: 3cf1625baf4695ade2c47efe87934f91b1def7529cb5afb488c3ad806249cf5e
  • Pointer size: 131 Bytes
  • Size of remote file: 266 kB