Alexander Sanchez commited on
Commit
2c07e6b
Β·
1 Parent(s): 2710330

updated with Paloma's errata report

Browse files
Files changed (2) hide show
  1. htr_error_patterns_from_data.py +1474 -0
  2. rag_corrector.py +72 -29
htr_error_patterns_from_data.py ADDED
@@ -0,0 +1,1474 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ HTR_ERROR_PATTERNS
3
+ ──────────────────
4
+ Generados desde: Conjunto_de_datos_Erratas_Lectura_cercana.xlsx
5
+ 906 casos Β· 46 documentos Β· 4 caligrafΓ­as
6
+
7
+ Mapeo de columnas Excel β†’ campos del patrΓ³n:
8
+ Reemplazo β†’ htr / gt (carΓ‘cter detectado)
9
+ DescripciΓ³n β†’ context (descripciΓ³n del error)
10
+ HTR + GT β†’ examples (todos los pares reales del corpus)
11
+ Severidad β†’ severity
12
+ Tipo error β†’ type
13
+ CaligrafΓ­a β†’ caligrafia
14
+ Tendencia β†’ tendencia
15
+ """
16
+
17
+ HTR_ERROR_PATTERNS = [
18
+
19
+ # [12x ocurrencias β€” 11 ejemplos ΓΊnicos]
20
+ {
21
+ "htr": 'n',
22
+ "gt": 'm',
23
+ "type": "visual",
24
+ "caligrafia": ['Encadenada', 'Italica_cursiva', 'Procesal'],
25
+ "severity": "alta",
26
+ "confidence": "alta",
27
+ "tendencia": 'Astas ascendentes, trazos diagonales, Curva, MΓ­nimas',
28
+ "context": 'ConfusiΓ³n entre "m" y "n"',
29
+ "examples": ['nonbrado β†’ nombrado', 'rreynote si mi β†’ rrey motesuma', 'no β†’ mdo', 'na nantras β†’ manantial', 'non con β†’ monΓ§on', 'nes β†’ mes', 'nonbrada β†’ nombrada', 'acostunta β†’ acostumbra', 'su atenala β†’ guatemala', 'Uno β†’ V md', 'd β†’ V md'],
30
+ "warning": None,
31
+ },
32
+
33
+ # [10x ocurrencias β€” 10 ejemplos ΓΊnicos]
34
+ {
35
+ "htr": 'l',
36
+ "gt": 's',
37
+ "type": "visual",
38
+ "caligrafia": ['Encadenada', 'Italica_cursiva', 'Procesal'],
39
+ "severity": "alta",
40
+ "confidence": "alta",
41
+ "tendencia": 'Astas ascendentes, Espacios, MΓ­nimas, Trazos curvos',
42
+ "context": 'EliminaciΓ³n de espacio; incersiciΓ³n de espacios; confusiΓ³n de carΓ‘cteres',
43
+ "examples": ['tho mal β†’ Thomas', 'del β†’ dos', 'la tistazer β†’ satisfazer', 'lan β†’ san', 'la Γ§endo es β†’ saΓ§erdote', 'el ben β†’ esten', 'el paΓ±t β†’ espaΓ±a', 'le β†’ se', 'pel β†’ pesos', 'le β†’ Se'],
44
+ "warning": None,
45
+ },
46
+
47
+ # [9x ocurrencias β€” 9 ejemplos ΓΊnicos]
48
+ {
49
+ "htr": 'a',
50
+ "gt": 'o',
51
+ "type": "visual",
52
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
53
+ "severity": "baja",
54
+ "confidence": "baja",
55
+ "tendencia": 'Astas ascendentes, Curva, MΓ­nimas, Trazos curvos',
56
+ "context": 'ConfusiΓ³n entre "o" y "a"',
57
+ "examples": ['barrego β†’ borrego', 'Parta β†’ barcos', 'barca β†’ Barcos', 'cunplida β†’ cunPlido', 'avieren β†’ ovieren', 'yndias β†’ yndios', 'las β†’ los', 'carte β†’ corte', 'la β†’ Lo'],
58
+ "warning": None,
59
+ },
60
+
61
+ # [9x ocurrencias β€” 9 ejemplos ΓΊnicos]
62
+ {
63
+ "htr": 't',
64
+ "gt": 's',
65
+ "type": "visual",
66
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
67
+ "severity": "media",
68
+ "confidence": "media",
69
+ "tendencia": 'Astas ascendentes, Astas descendentes, Curva, Trazos curvos',
70
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
71
+ "examples": ['aten β†’ pasen', 'pretente β†’ presente', 'conttienta β†’ conssienta', 'y no fenta β†’ en ofensa', 'conte en y en β†’ Consernientes', 'frvate β†’ sirvase', 'tale β†’ sale', 'Ylsimo β†’ Ultimo', 'te β†’ se'],
72
+ "warning": None,
73
+ },
74
+
75
+ # [9x ocurrencias β€” 9 ejemplos ΓΊnicos]
76
+ {
77
+ "htr": 'n',
78
+ "gt": 'r',
79
+ "type": "visual",
80
+ "caligrafia": ['Encadenada', 'Procesal'],
81
+ "severity": "alta",
82
+ "confidence": "alta",
83
+ "tendencia": 'Curva, MΓ­nimas',
84
+ "context": 'reemplaza caracteres y agrega espacios',
85
+ "examples": ['Conquenda β†’ Conquerda', 'condan β†’ conforme', 'cunez β†’ Xuarez', 'haΓ§en β†’ haΓ§er', 'conporados β†’ corporados', 'Jana β†’ Jara', 'nua l β†’ real', 'consaΓ§endo de β†’ con saΓ§erdote', 'la Γ§endo es β†’ saΓ§erdote'],
86
+ "warning": None,
87
+ },
88
+
89
+ # [8x ocurrencias β€” 6 ejemplos ΓΊnicos]
90
+ {
91
+ "htr": 'd',
92
+ "gt": 's',
93
+ "type": "visual",
94
+ "caligrafia": ['Encadenada', 'Italica_cursiva', 'Procesal'],
95
+ "severity": "baja",
96
+ "confidence": "baja",
97
+ "tendencia": 'Astas ascendentes, Curva, MΓ­nimas, Trazos curvos',
98
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
99
+ "examples": ['do β†’ so', 'Condara β†’ consara', 'cados β†’ casos', 'de β†’ se', 'comidario β†’ comisario', 'dan β†’ san'],
100
+ "warning": None,
101
+ },
102
+
103
+ # [8x ocurrencias β€” 8 ejemplos ΓΊnicos]
104
+ {
105
+ "htr": 'e',
106
+ "gt": 'c',
107
+ "type": "visual",
108
+ "caligrafia": ['Encadenada'],
109
+ "severity": "alta",
110
+ "confidence": "alta",
111
+ "tendencia": 'Curva',
112
+ "context": 'reemplaza caracteres y agrega y elimina espacios',
113
+ "examples": ['en el β†’ con el', 'en viene β†’ conviene', 'e harede β†’ chantre de', 'deseallos β†’ descalzos', 'dieba β†’ dicha', 'su seafallas β†’ sus casullas', 'sueramento β†’ sacramento', 'seramente β†’ sacramento'],
114
+ "warning": None,
115
+ },
116
+
117
+ # [7x ocurrencias β€” 5 ejemplos ΓΊnicos]
118
+ {
119
+ "htr": 'e',
120
+ "gt": 'o',
121
+ "type": "visual",
122
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
123
+ "severity": "baja",
124
+ "confidence": "baja",
125
+ "tendencia": 'Curva, MΓ­nimas, Trazos curvos, Trazos curvos, No reconocimiento de trazos',
126
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
127
+ "examples": ['ynformen β†’ ynformon', 'e β†’ o', 'abueren β†’ abrieron', 'aver de ta β†’ sacerdote', 'es β†’ os'],
128
+ "warning": None,
129
+ },
130
+
131
+ # [7x ocurrencias β€” 7 ejemplos ΓΊnicos]
132
+ {
133
+ "htr": 's',
134
+ "gt": 'l',
135
+ "type": "visual",
136
+ "caligrafia": ['Encadenada', 'Italica_cursiva', 'Procesal'],
137
+ "severity": "baja",
138
+ "confidence": "baja",
139
+ "tendencia": 'Astas ascendentes, Curva, MΓ­nimas',
140
+ "context": 'confusiΓ³n de carΓ‘cter L por s; omisiΓ³n de caractΓ©r c',
141
+ "examples": ['es β†’ el', 'seguar β†’ leguas', 'de suese β†’ se suele', 'espaΓ±os β†’ espaΓ±ol', 'na nantras β†’ manantial', 'las cavala β†’ alcavala', 'sido β†’ Licdo'],
142
+ "warning": None,
143
+ },
144
+
145
+ # [6x ocurrencias β€” 6 ejemplos ΓΊnicos]
146
+ {
147
+ "htr": 'e',
148
+ "gt": 'i',
149
+ "type": "visual",
150
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
151
+ "severity": "alta",
152
+ "confidence": "alta",
153
+ "tendencia": 'Astas ascendentes, Curva, Espacios, No reconocimiento de trazos, OmisiΓ³n de carΓ‘cteres, Trazos curvos',
154
+ "context": 'ConfusiΓ³n de carΓ‘cteres; InserciΓ³n de espacio',
155
+ "examples": ['que mentos β†’ quinientos', 'credito β†’ cridito', 'Ros β†’ Dios', 'de β†’ diga', 'Se β†’ Si', 'que no β†’ quinto'],
156
+ "warning": None,
157
+ },
158
+
159
+ # [6x ocurrencias β€” 6 ejemplos ΓΊnicos]
160
+ {
161
+ "htr": 'b',
162
+ "gt": 's',
163
+ "type": "visual",
164
+ "caligrafia": ['Encadenada'],
165
+ "severity": "baja",
166
+ "confidence": "baja",
167
+ "tendencia": 'Astas ascendentes, Curva, Espacios',
168
+ "context": 'reemplaza caracteres y elimina espacios',
169
+ "examples": ['bocargo β†’ so cargo', 'bave β†’ save', 'albanto β†’ al santo', 'cabillas β†’ casillas', 'fiscalebalcaldes β†’ fiscales alcaldes', 'banda β†’ sancta'],
170
+ "warning": None,
171
+ },
172
+
173
+ # [6x ocurrencias β€” 6 ejemplos ΓΊnicos]
174
+ {
175
+ "htr": 'i',
176
+ "gt": 'e',
177
+ "type": "visual",
178
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
179
+ "severity": "baja",
180
+ "confidence": "baja",
181
+ "tendencia": 'Astas ascendentes, Espacios, MΓ­nimas, Trazos curvos, Trazos curvos, No reconocimiento de trazos',
182
+ "context": 'ConfusiΓ³n de carΓ‘cteres; eliminaciΓ³n de espacios',
183
+ "examples": ['naviga β†’ navega', 'seis capa β†’ se escapa', 'parti β†’ parte', 'sui β†’ que', 'mi β†’ me', 'mir β†’ mer'],
184
+ "warning": None,
185
+ },
186
+
187
+ # [6x ocurrencias β€” 6 ejemplos ΓΊnicos]
188
+ {
189
+ "htr": 'g',
190
+ "gt": 'p',
191
+ "type": "visual",
192
+ "caligrafia": ['Encadenada'],
193
+ "severity": "baja",
194
+ "confidence": "baja",
195
+ "tendencia": 'Astas descendentes',
196
+ "context": 'reemplaza caracteres y el salto de lΓ­nea',
197
+ "examples": ['gasen β†’ pasen', 'gravia β†’ pravia', 'gas β†’ paz', 'guaral a cargor β†’ guadal/cazar por', 'obusgado β†’ obispado', 'grabendados β†’ prebendados'],
198
+ "warning": None,
199
+ },
200
+
201
+ # [6x ocurrencias β€” 6 ejemplos ΓΊnicos]
202
+ {
203
+ "htr": 'r',
204
+ "gt": 'n',
205
+ "type": "visual",
206
+ "caligrafia": ['Encadenada', 'Redonda'],
207
+ "severity": "baja",
208
+ "confidence": "baja",
209
+ "tendencia": 'Curva, MΓ­nimas',
210
+ "context": 'reemplaza caracteres y elimina espacios',
211
+ "examples": ['ingerio β†’ ingenio', 'uras β†’ unas', 'beran β†’ benian', 'tieren β†’ tienen', 'frdada β†’ fundada', 'guero β†’ que no'],
212
+ "warning": None,
213
+ },
214
+
215
+ # [5x ocurrencias β€” 5 ejemplos ΓΊnicos]
216
+ {
217
+ "htr": 'b',
218
+ "gt": 'v',
219
+ "type": "visual",
220
+ "caligrafia": ['Encadenada'],
221
+ "severity": "baja",
222
+ "confidence": "baja",
223
+ "tendencia": 'Astas ascendentes, Curva',
224
+ "context": 'ConfusiΓ³n entre "b" y "v". ConfusiΓ³n entre "ie" y "ei", ConfusiΓ³n entre "e" y "o"',
225
+ "examples": ['biento β†’ Veinte', 'nueba β†’ nueva', 'beinte β†’ veinte', 'beinte β†’ veynte', 'bilega β†’ villegas.'],
226
+ "warning": 'NO_CORREGIR: b/v son intercambiables grΓ‘ficamente en s.XVI.',
227
+ },
228
+
229
+ # [5x ocurrencias β€” 5 ejemplos ΓΊnicos]
230
+ {
231
+ "htr": 'o',
232
+ "gt": 'e',
233
+ "type": "segmentation",
234
+ "caligrafia": ['Encadenada', 'Italica_cursiva', 'Procesal'],
235
+ "severity": "media",
236
+ "confidence": "media",
237
+ "tendencia": 'Curva, Espacios, MΓ­nimas, Trazos curvos',
238
+ "context": 'InserciΓ³n de palabras y letras inexistentes. ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura.',
239
+ "examples": ['[su]plicomo β†’ [su]plico me', 'someta darle β†’ se me mandare e', 'Casor dote β†’ Sacerdote', 'dos β†’ oides', 'hedios β†’ las dies'],
240
+ "warning": None,
241
+ },
242
+
243
+ # [4x ocurrencias β€” 4 ejemplos ΓΊnicos]
244
+ {
245
+ "htr": 'i',
246
+ "gt": 'e',
247
+ "type": "segmentation",
248
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
249
+ "severity": "alta",
250
+ "confidence": "alta",
251
+ "tendencia": 'Espacios, MΓ­nimas',
252
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. ConfusiΓ³n entre "de" y "di". ConfusiΓ³n entre "z", "s" y "c".',
253
+ "examples": ['digui pusia β†’ de guipuZcua', 'dian don algui β†’ de andonaegui', 'seΓ±oria β†’ seΓ±ores', 'qui β†’ que'],
254
+ "warning": None,
255
+ },
256
+
257
+ # [4x ocurrencias β€” 4 ejemplos ΓΊnicos]
258
+ {
259
+ "htr": 'a',
260
+ "gt": 'e',
261
+ "type": "visual",
262
+ "caligrafia": ['Encadenada', 'Italica_cursiva', 'Procesal'],
263
+ "severity": "alta",
264
+ "confidence": "alta",
265
+ "tendencia": 'Astas ascendentes, Curva, Espacios, Trazos curvos, No reconocimiento de trazos',
266
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. InserciΓ³n de letras y palabras inexistentes',
267
+ "examples": ['dando magui β†’ de andonaegui', 'fialmente β†’ fielmente', 'aver de ta β†’ sacerdote', 'Franco β†’ Frenda'],
268
+ "warning": None,
269
+ },
270
+
271
+ # [4x ocurrencias β€” 4 ejemplos ΓΊnicos]
272
+ {
273
+ "htr": 'u',
274
+ "gt": 'i',
275
+ "type": "visual",
276
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
277
+ "severity": "media",
278
+ "confidence": "media",
279
+ "tendencia": 'MΓ­nimas, Trazos curvos',
280
+ "context": 'salto de lΓ­nea',
281
+ "examples": ['puerden β†’ pierden', 'truna β†’ Triana', 'due β†’ die', 'cru β†’ cri'],
282
+ "warning": None,
283
+ },
284
+
285
+ # [4x ocurrencias β€” 4 ejemplos ΓΊnicos]
286
+ {
287
+ "htr": 'g',
288
+ "gt": 'q',
289
+ "type": "segmentation",
290
+ "caligrafia": ['Italica_cursiva'],
291
+ "severity": "media",
292
+ "confidence": "media",
293
+ "tendencia": 'Astas descendentes',
294
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
295
+ "examples": ['yngg. β†’ ynqqor.', 'yngo. β†’ Ynqqon', 'gumentos β†’ quinientos', 'quir β†’ guir'],
296
+ "warning": None,
297
+ },
298
+
299
+ # [4x ocurrencias β€” 4 ejemplos ΓΊnicos]
300
+ {
301
+ "htr": 'e',
302
+ "gt": '',
303
+ "type": "segmentation",
304
+ "caligrafia": ['Procesal'],
305
+ "severity": "baja",
306
+ "confidence": "baja",
307
+ "tendencia": 'Curva, MΓ­nimas',
308
+ "context": 'elimina espacios, crea una palabra que no existe',
309
+ "examples": ['es β†’ Os', 'e β†’ ral', 'maremo β†’ mas o mos', 'y e destan β†’ 7. distan'],
310
+ "warning": None,
311
+ },
312
+
313
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
314
+ {
315
+ "htr": 'r',
316
+ "gt": 't',
317
+ "type": "visual",
318
+ "caligrafia": ['Encadenada'],
319
+ "severity": "baja",
320
+ "confidence": "baja",
321
+ "tendencia": 'Astas ascendentes, Astas descendentes',
322
+ "context": 'ConfusiΓ³n entre "y" y "p". ConfusiΓ³n entre "t" y "r"',
323
+ "examples": ['deron β†’ peton', 'Por engo β†’ yo tengo', 'plara β†’ plata'],
324
+ "warning": None,
325
+ },
326
+
327
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
328
+ {
329
+ "htr": 'r',
330
+ "gt": 'y',
331
+ "type": "segmentation",
332
+ "caligrafia": ['Encadenada'],
333
+ "severity": "baja",
334
+ "confidence": "baja",
335
+ "tendencia": 'Astas descendentes, Espacios',
336
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. ConfusiΓ³n entre "z" y "s". InserciΓ³n de letras inexistentes en una palabra.',
337
+ "examples": ['devisclara β†’ de viZcaya', 'pidor β†’ pido y', 'prestara β†’ presta y'],
338
+ "warning": None,
339
+ },
340
+
341
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
342
+ {
343
+ "htr": 'v',
344
+ "gt": 'b',
345
+ "type": "visual",
346
+ "caligrafia": ['Encadenada'],
347
+ "severity": "baja",
348
+ "confidence": "baja",
349
+ "tendencia": 'Astas ascendentes',
350
+ "context": 'ConfusiΓ³n entre "b" y "v"',
351
+ "examples": ['varra β†’ barra', 'have β†’ sabe', 'nueve β†’ nuebe'],
352
+ "warning": 'NO_CORREGIR: b/v son intercambiables grΓ‘ficamente en s.XVI.',
353
+ },
354
+
355
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
356
+ {
357
+ "htr": 'a',
358
+ "gt": 'o',
359
+ "type": "segmentation",
360
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
361
+ "severity": "media",
362
+ "confidence": "media",
363
+ "tendencia": 'Espacios, MΓ­nimas, Trazos curvos',
364
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. ConfusiΓ³n entre "o" y "a"',
365
+ "examples": ['ffarcar parte β†’ ffabrica y porte', 'gunaΓ±a β†’ y un aΓ±os', 'hosta β†’ hasta'],
366
+ "warning": None,
367
+ },
368
+
369
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
370
+ {
371
+ "htr": 'm',
372
+ "gt": 'n',
373
+ "type": "visual",
374
+ "caligrafia": ['Encadenada', 'Italica_cursiva', 'Procesal'],
375
+ "severity": "alta",
376
+ "confidence": "alta",
377
+ "tendencia": 'Curva, Espacios',
378
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. InserciΓ³n de letras y palabras inexistentes',
379
+ "examples": ['dando magui β†’ de andonaegui', 'salmientienden β†’ saben y entienden', 'demoS β†’ UnoS'],
380
+ "warning": None,
381
+ },
382
+
383
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
384
+ {
385
+ "htr": 'e',
386
+ "gt": 'i',
387
+ "type": "segmentation",
388
+ "caligrafia": ['Encadenada', 'Procesal'],
389
+ "severity": "media",
390
+ "confidence": "media",
391
+ "tendencia": 'Espacios, MΓ­nimas',
392
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura',
393
+ "examples": ['parte alares β†’ parti culares', 'condo alle β†’ con lo alli', 'que pae β†’ tequilpa'],
394
+ "warning": None,
395
+ },
396
+
397
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
398
+ {
399
+ "htr": 'n',
400
+ "gt": 'Γ±',
401
+ "type": "visual",
402
+ "caligrafia": ['Encadenada'],
403
+ "severity": "baja",
404
+ "confidence": "baja",
405
+ "tendencia": 'Espacios, MΓ­nimas',
406
+ "context": '',
407
+ "examples": ['a no β†’ aΓ±o', 'conpana β†’ conpaΓ±ia', 'denal β†’ seΓ±al'],
408
+ "warning": None,
409
+ },
410
+
411
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
412
+ {
413
+ "htr": 'm',
414
+ "gt": 'ni',
415
+ "type": "visual",
416
+ "caligrafia": ['Encadenada'],
417
+ "severity": "media",
418
+ "confidence": "media",
419
+ "tendencia": 'Espacios, MΓ­nimas',
420
+ "context": 'Abreviatura',
421
+ "examples": ['que mentos β†’ quinientos', 'qui mes β†’ quinieos', 'antomo β†’ antonio'],
422
+ "warning": None,
423
+ },
424
+
425
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
426
+ {
427
+ "htr": 't',
428
+ "gt": 'c',
429
+ "type": "visual",
430
+ "caligrafia": ['Encadenada'],
431
+ "severity": "baja",
432
+ "confidence": "baja",
433
+ "tendencia": 'Astas ascendentes, Curva',
434
+ "context": '',
435
+ "examples": ['Parta β†’ barcos', 'barto β†’ Barco', 'sater β†’ hacer'],
436
+ "warning": None,
437
+ },
438
+
439
+ # [3x ocurrencias β€” 2 ejemplos ΓΊnicos]
440
+ {
441
+ "htr": 'z',
442
+ "gt": 'j',
443
+ "type": "visual",
444
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
445
+ "severity": "baja",
446
+ "confidence": "baja",
447
+ "tendencia": 'Astas ascendentes, Astas descendentes, Astas descendentes',
448
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
449
+ "examples": ['viaze β†’ viaje', 'tazel β†’ bajel'],
450
+ "warning": None,
451
+ },
452
+
453
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
454
+ {
455
+ "htr": 'm',
456
+ "gt": 'rr',
457
+ "type": "visual",
458
+ "caligrafia": ['Encadenada'],
459
+ "severity": "media",
460
+ "confidence": "media",
461
+ "tendencia": 'Curva, Espacios, MΓ­nimas',
462
+ "context": 'reemplaza caracteres y agrega espacios',
463
+ "examples": ['ocomer β†’ socorrer', 'so comen β†’ socorren', 'y me mi sible β†’ irremisible'],
464
+ "warning": None,
465
+ },
466
+
467
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
468
+ {
469
+ "htr": 'o',
470
+ "gt": 'a',
471
+ "type": "visual",
472
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
473
+ "severity": "alta",
474
+ "confidence": "alta",
475
+ "tendencia": 'MΓ­nimas, OmisiΓ³n de carΓ‘cteres, Trazos curvos',
476
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
477
+ "examples": ['seΓ±orio β†’ seΓ±oria', 'hostu β†’ hasta', 'tendo β†’ ofrenda'],
478
+ "warning": None,
479
+ },
480
+
481
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
482
+ {
483
+ "htr": 'b',
484
+ "gt": 'v,',
485
+ "type": "visual",
486
+ "caligrafia": ['Encadenada'],
487
+ "severity": "baja",
488
+ "confidence": "baja",
489
+ "tendencia": 'Astas ascendentes, Curva',
490
+ "context": '',
491
+ "examples": ['bargo β†’ varco', 'bleito β†’ vecino', 'billadas β†’ villegas'],
492
+ "warning": None,
493
+ },
494
+
495
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
496
+ {
497
+ "htr": 'Γ±',
498
+ "gt": 'n',
499
+ "type": "visual",
500
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
501
+ "severity": "baja",
502
+ "confidence": "baja",
503
+ "tendencia": 'Astas ascendentes, Curva',
504
+ "context": 'IncersiΓ³n de virgulilla',
505
+ "examples": ['preΓ±or β†’ thenor', 'aΓ±o β†’ anto', 'Γ±os β†’ nos'],
506
+ "warning": None,
507
+ },
508
+
509
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
510
+ {
511
+ "htr": 'r',
512
+ "gt": 'z',
513
+ "type": "visual",
514
+ "caligrafia": ['Encadenada', 'Procesal'],
515
+ "severity": "baja",
516
+ "confidence": "baja",
517
+ "tendencia": 'MΓ­nimas',
518
+ "context": 'Confunde los trazos',
519
+ "examples": ['catorre β†’ catorze', 'juirio β†’ juizio', 'perjuirio β†’ perjuizio'],
520
+ "warning": None,
521
+ },
522
+
523
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
524
+ {
525
+ "htr": 'n',
526
+ "gt": 'rr',
527
+ "type": "visual",
528
+ "caligrafia": ['Encadenada'],
529
+ "severity": "media",
530
+ "confidence": "media",
531
+ "tendencia": 'Curva, MΓ­nimas',
532
+ "context": 'reemplaza caracteres',
533
+ "examples": ['navano β†’ Navarro', 'ne quintos β†’ rrequisitos', 'senalvo β†’ zerralvo'],
534
+ "warning": None,
535
+ },
536
+
537
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
538
+ {
539
+ "htr": 'd',
540
+ "gt": 's,',
541
+ "type": "visual",
542
+ "caligrafia": ['Encadenada'],
543
+ "severity": "baja",
544
+ "confidence": "baja",
545
+ "tendencia": 'Curva, MΓ­nimas',
546
+ "context": '',
547
+ "examples": ['de suese β†’ se suele', 'denal β†’ seΓ±al', 'de β†’ se'],
548
+ "warning": None,
549
+ },
550
+
551
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
552
+ {
553
+ "htr": 'd',
554
+ "gt": 's,',
555
+ "type": "segmentation",
556
+ "caligrafia": ['Encadenada'],
557
+ "severity": "media",
558
+ "confidence": "media",
559
+ "tendencia": 'Curva, Espacios',
560
+ "context": '',
561
+ "examples": ['duarte de ques β†’ suchitepeques', 'abir de toria β†’ aberse ydo desta', 'ne desa don β†’ nesesario'],
562
+ "warning": None,
563
+ },
564
+
565
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
566
+ {
567
+ "htr": 'o',
568
+ "gt": 'i',
569
+ "type": "visual",
570
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
571
+ "severity": "baja",
572
+ "confidence": "baja",
573
+ "tendencia": 'Astas descendentes, MΓ­nimas, Trazos curvos',
574
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
575
+ "examples": ['comosario. β†’ comisario', 'so β†’ si', 'Ros β†’ Dios'],
576
+ "warning": None,
577
+ },
578
+
579
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
580
+ {
581
+ "htr": 'd',
582
+ "gt": 't',
583
+ "type": "visual",
584
+ "caligrafia": ['Encadenada'],
585
+ "severity": "alta",
586
+ "confidence": "alta",
587
+ "tendencia": 'Astas ascendentes',
588
+ "context": 'reemplaza caracteres',
589
+ "examples": ['quando β†’ quanto', 'dho β†’ tpo', 'consaΓ§endo de β†’ con saΓ§erdote'],
590
+ "warning": None,
591
+ },
592
+
593
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
594
+ {
595
+ "htr": 'p',
596
+ "gt": 'g',
597
+ "type": "visual",
598
+ "caligrafia": ['Encadenada'],
599
+ "severity": "baja",
600
+ "confidence": "baja",
601
+ "tendencia": 'Astas descendentes',
602
+ "context": 'reemplaza caracteres y agrega espacios',
603
+ "examples": ['mples β†’ angeles', 'y presia β†’ Yglesia', 'y plesia β†’ yglesia'],
604
+ "warning": None,
605
+ },
606
+
607
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
608
+ {
609
+ "htr": 'r',
610
+ "gt": 'c',
611
+ "type": "visual",
612
+ "caligrafia": ['Encadenada'],
613
+ "severity": "alta",
614
+ "confidence": "alta",
615
+ "tendencia": 'Curva',
616
+ "context": 'reemplaza y agrega caracteres',
617
+ "examples": ['Barramento β†’ Sacramento', 'Repa deros β†’ Ro pacheco', 'notro β†’ mexco'],
618
+ "warning": None,
619
+ },
620
+
621
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
622
+ {
623
+ "htr": 'b',
624
+ "gt": 'z',
625
+ "type": "visual",
626
+ "caligrafia": ['Encadenada'],
627
+ "severity": "alta",
628
+ "confidence": "alta",
629
+ "tendencia": 'Curva',
630
+ "context": 'reemplaza y agrega caracteres, agrega y elimina espacios',
631
+ "examples": ['en balta β†’ cruz alta', 'cubalta β†’ cruz alta', 'en baltos β†’ cruz alta'],
632
+ "warning": None,
633
+ },
634
+
635
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
636
+ {
637
+ "htr": 'o',
638
+ "gt": 'a',
639
+ "type": "segmentation",
640
+ "caligrafia": ['Italica_cursiva'],
641
+ "severity": "baja",
642
+ "confidence": "baja",
643
+ "tendencia": 'Trazos curvos',
644
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
645
+ "examples": ['coste jon β†’ castejon', 'expreso β†’ expreSa', 'guatemalo β†’ guatemala'],
646
+ "warning": None,
647
+ },
648
+
649
+ # [3x ocurrencias β€” 2 ejemplos ΓΊnicos]
650
+ {
651
+ "htr": 'U',
652
+ "gt": 'V',
653
+ "type": "visual",
654
+ "caligrafia": ['Italica_cursiva'],
655
+ "severity": "alta",
656
+ "confidence": "alta",
657
+ "tendencia": 'Astas ascendentes, trazos diagonales, MΓ­nimas',
658
+ "context": 'EliminaciΓ³n de espacio; No reconocimiento de abreviatura',
659
+ "examples": ['Uno β†’ V md', 'd β†’ V md'],
660
+ "warning": None,
661
+ },
662
+
663
+ # [3x ocurrencias β€” 2 ejemplos ΓΊnicos]
664
+ {
665
+ "htr": 'o',
666
+ "gt": 'd',
667
+ "type": "visual",
668
+ "caligrafia": ['Italica_cursiva'],
669
+ "severity": "alta",
670
+ "confidence": "alta",
671
+ "tendencia": 'Astas ascendentes, trazos diagonales, MΓ­nimas',
672
+ "context": 'EliminaciΓ³n de espacio; No reconocimiento de abreviatura',
673
+ "examples": ['Uno β†’ V md', 'd β†’ V md'],
674
+ "warning": None,
675
+ },
676
+
677
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
678
+ {
679
+ "htr": 'r',
680
+ "gt": 'i',
681
+ "type": "segmentation",
682
+ "caligrafia": ['Italica_cursiva'],
683
+ "severity": "alta",
684
+ "confidence": "alta",
685
+ "tendencia": 'Astas descendentes, Trazos curvos',
686
+ "context": 'ConfusiΓ³n de carΓ‘cteres; incersiΓ³n de espacios',
687
+ "examples": ['antrsgacion β†’ anticipacion', 'pro pra β†’ propia', 'predad β†’ piedad'],
688
+ "warning": None,
689
+ },
690
+
691
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
692
+ {
693
+ "htr": 's',
694
+ "gt": 'r',
695
+ "type": "segmentation",
696
+ "caligrafia": ['Italica_cursiva'],
697
+ "severity": "alta",
698
+ "confidence": "alta",
699
+ "tendencia": 'Trazos curvos',
700
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
701
+ "examples": ['recentos β†’ Redentor', 'Juezer β†’ Juezes', 'SeΓ±os β†’ seΓ±or'],
702
+ "warning": None,
703
+ },
704
+
705
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
706
+ {
707
+ "htr": 'm',
708
+ "gt": '',
709
+ "type": "segmentation",
710
+ "caligrafia": ['Procesal'],
711
+ "severity": "media",
712
+ "confidence": "media",
713
+ "tendencia": 'Curva, Espacios',
714
+ "context": 'elimina espacio, sustituye caracteres',
715
+ "examples": ['maca β†’ nra ca', 'demas β†’ de esas', 'ni mas β†’ leguas'],
716
+ "warning": None,
717
+ },
718
+
719
+ # [3x ocurrencias β€” 3 ejemplos ΓΊnicos]
720
+ {
721
+ "htr": 'a',
722
+ "gt": '',
723
+ "type": "segmentation",
724
+ "caligrafia": ['Procesal'],
725
+ "severity": "baja",
726
+ "confidence": "baja",
727
+ "tendencia": '',
728
+ "context": 'inserta espacios, reemplaza caracteres',
729
+ "examples": ['pa β†’ especial', 'y ma β†’ yzmi', 'jurida β†’ juridion'],
730
+ "warning": None,
731
+ },
732
+
733
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
734
+ {
735
+ "htr": 'b',
736
+ "gt": 'v',
737
+ "type": "segmentation",
738
+ "caligrafia": ['Encadenada'],
739
+ "severity": "alta",
740
+ "confidence": "alta",
741
+ "tendencia": 'Astas descendentes, Espacios',
742
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura',
743
+ "examples": ['biento uno β†’ Veinte Y Uno', 'debistador β†’ del vesitador'],
744
+ "warning": 'NO_CORREGIR: b/v son intercambiables grΓ‘ficamente en s.XVI.',
745
+ },
746
+
747
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
748
+ {
749
+ "htr": 'Γ±',
750
+ "gt": 'n',
751
+ "type": "segmentation",
752
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
753
+ "severity": "media",
754
+ "confidence": "media",
755
+ "tendencia": 'Astas ascendentes, Trazos curvos',
756
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura e InserciΓ³n de palabras inexistentes',
757
+ "examples": ['seΓ±or yado β†’ tenor y de los', 'NomaΓ±ores β†’ Nomanones'],
758
+ "warning": None,
759
+ },
760
+
761
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
762
+ {
763
+ "htr": 'c',
764
+ "gt": 'l',
765
+ "type": "segmentation",
766
+ "caligrafia": ['Encadenada'],
767
+ "severity": "alta",
768
+ "confidence": "alta",
769
+ "tendencia": 'Astas ascendentes, Curva',
770
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. ConfusiΓ³n entre "c" y "l"',
771
+ "examples": ['cavilla β†’ la villa', 'Suecedicatar β†’ suele dilatar'],
772
+ "warning": None,
773
+ },
774
+
775
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
776
+ {
777
+ "htr": 'p',
778
+ "gt": 'g',
779
+ "type": "segmentation",
780
+ "caligrafia": ['Encadenada'],
781
+ "severity": "alta",
782
+ "confidence": "alta",
783
+ "tendencia": 'Astas descendentes, Espacios',
784
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. ConfusiΓ³n entre "g" y "p"',
785
+ "examples": ['por var β†’ gorvaz', 'espran β†’ es gran'],
786
+ "warning": None,
787
+ },
788
+
789
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
790
+ {
791
+ "htr": 's',
792
+ "gt": 'Z',
793
+ "type": "segmentation",
794
+ "caligrafia": ['Encadenada'],
795
+ "severity": "alta",
796
+ "confidence": "alta",
797
+ "tendencia": 'Astas descendentes, Espacios',
798
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. ConfusiΓ³n entre "z" y "s". InserciΓ³n de letras inexistentes en una palabra.',
799
+ "examples": ['digui pusia β†’ de guipuZcua', 'devisclara β†’ de viZcaya'],
800
+ "warning": None,
801
+ },
802
+
803
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
804
+ {
805
+ "htr": 'r',
806
+ "gt": 'y',
807
+ "type": "visual",
808
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
809
+ "severity": "baja",
810
+ "confidence": "baja",
811
+ "tendencia": 'Astas ascendentes, Astas descendentes',
812
+ "context": 'ConfusiΓ³n entre "y" y "r"',
813
+ "examples": ['sor β†’ soy', 'or β†’ hoy'],
814
+ "warning": None,
815
+ },
816
+
817
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
818
+ {
819
+ "htr": 'o',
820
+ "gt": 'e',
821
+ "type": "visual",
822
+ "caligrafia": ['Encadenada'],
823
+ "severity": "baja",
824
+ "confidence": "baja",
825
+ "tendencia": 'Curva, MΓ­nimas',
826
+ "context": 'ConfusiΓ³n entre "e" y "o"',
827
+ "examples": ['porto β†’ porte', 'rresento β†’ presente'],
828
+ "warning": None,
829
+ },
830
+
831
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
832
+ {
833
+ "htr": 'r',
834
+ "gt": 'i',
835
+ "type": "visual",
836
+ "caligrafia": ['Encadenada'],
837
+ "severity": "media",
838
+ "confidence": "media",
839
+ "tendencia": 'Astas ascendentes, MΓ­nimas',
840
+ "context": 'InserciΓ³n de letras inexistentes en una palabra',
841
+ "examples": ['estreseros β†’ astilleros', 'enbre β†’ enbie'],
842
+ "warning": None,
843
+ },
844
+
845
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
846
+ {
847
+ "htr": 'i',
848
+ "gt": 'r',
849
+ "type": "visual",
850
+ "caligrafia": ['Encadenada', 'Procesal'],
851
+ "severity": "baja",
852
+ "confidence": "baja",
853
+ "tendencia": 'MΓ­nimas',
854
+ "context": 'ConfusiΓ³n de una letra i;r',
855
+ "examples": ['Registtio β†’ Registtro', 'pie β†’ pre'],
856
+ "warning": None,
857
+ },
858
+
859
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
860
+ {
861
+ "htr": 'l',
862
+ "gt": 's',
863
+ "type": "dropout",
864
+ "caligrafia": ['Encadenada', 'Procesal'],
865
+ "severity": "media",
866
+ "confidence": "media",
867
+ "tendencia": 'Astas ascendentes',
868
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. ConfusiΓ³n entre "s" y "l"',
869
+ "examples": ['el terrio β†’ este rrio', 'del pue β†’ despuΓ©s'],
870
+ "warning": None,
871
+ },
872
+
873
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
874
+ {
875
+ "htr": 'r',
876
+ "gt": 'y',
877
+ "type": "dropout",
878
+ "caligrafia": ['Encadenada'],
879
+ "severity": "media",
880
+ "confidence": "media",
881
+ "tendencia": 'Astas descendentes, MΓ­nimas',
882
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. InserciΓ³n de letras inexistentes y omisiΓ³n de letras.',
883
+ "examples": ['queroΓ§eso β†’ que yo estoy', 'hagora β†’ chagoya'],
884
+ "warning": None,
885
+ },
886
+
887
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
888
+ {
889
+ "htr": 'R',
890
+ "gt": 'H',
891
+ "type": "visual",
892
+ "caligrafia": ['Encadenada'],
893
+ "severity": "alta",
894
+ "confidence": "alta",
895
+ "tendencia": 'Astas ascendentes',
896
+ "context": 'ConfusiΓ³n de donde poner espacio o donde no poner dependiendo la ligadura. ConfusiΓ³n entre "H" y "R"',
897
+ "examples": ['Rey nan β†’ Hernan', 'Resetos β†’ Hefetos'],
898
+ "warning": None,
899
+ },
900
+
901
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
902
+ {
903
+ "htr": 'z',
904
+ "gt": 'g',
905
+ "type": "visual",
906
+ "caligrafia": ['Encadenada'],
907
+ "severity": "baja",
908
+ "confidence": "baja",
909
+ "tendencia": 'Astas descendentes, MΓ­nimas',
910
+ "context": '',
911
+ "examples": ['haza β†’ haga', 'hazo a β†’ haga'],
912
+ "warning": None,
913
+ },
914
+
915
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
916
+ {
917
+ "htr": 'P',
918
+ "gt": 'B',
919
+ "type": "visual",
920
+ "caligrafia": ['Encadenada'],
921
+ "severity": "media",
922
+ "confidence": "media",
923
+ "tendencia": 'Astas ascendentes',
924
+ "context": '',
925
+ "examples": ['PresΓ§ies β†’ Brevajes', 'Partolome β†’ Bartolome'],
926
+ "warning": None,
927
+ },
928
+
929
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
930
+ {
931
+ "htr": 'r',
932
+ "gt": 'p',
933
+ "type": "visual",
934
+ "caligrafia": ['Encadenada', 'Redonda'],
935
+ "severity": "baja",
936
+ "confidence": "baja",
937
+ "tendencia": 'Astas descendentes, Curva',
938
+ "context": 'Confunde "r" con "p"',
939
+ "examples": ['rresentado β†’ presentado', 'rrenΓ§ipales β†’ prenΓ§ipales'],
940
+ "warning": None,
941
+ },
942
+
943
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
944
+ {
945
+ "htr": 'r',
946
+ "gt": 'v,',
947
+ "type": "visual",
948
+ "caligrafia": ['Encadenada'],
949
+ "severity": "baja",
950
+ "confidence": "baja",
951
+ "tendencia": 'Astas ascendentes, MΓ­nimas',
952
+ "context": '',
953
+ "examples": ['bare β†’ save', 'secriΓ§io β†’ serviΓ§io'],
954
+ "warning": None,
955
+ },
956
+
957
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
958
+ {
959
+ "htr": 'a',
960
+ "gt": 'e,',
961
+ "type": "visual",
962
+ "caligrafia": ['Encadenada'],
963
+ "severity": "baja",
964
+ "confidence": "baja",
965
+ "tendencia": 'Curva',
966
+ "context": '',
967
+ "examples": ['Puanas β†’ Buenas', 'billadas β†’ villegas'],
968
+ "warning": None,
969
+ },
970
+
971
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
972
+ {
973
+ "htr": 'l',
974
+ "gt": 'D',
975
+ "type": "visual",
976
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
977
+ "severity": "alta",
978
+ "confidence": "alta",
979
+ "tendencia": 'Curva, OmisiΓ³n de carΓ‘cteres',
980
+ "context": '',
981
+ "examples": ['le rrado β†’ De Prado', 'los β†’ Dios'],
982
+ "warning": None,
983
+ },
984
+
985
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
986
+ {
987
+ "htr": 'e',
988
+ "gt": 'u,',
989
+ "type": "segmentation",
990
+ "caligrafia": ['Encadenada', 'Procesal'],
991
+ "severity": "media",
992
+ "confidence": "media",
993
+ "tendencia": 'Espacios',
994
+ "context": 'reemplaza caracteres, elimina espacios, crea palabra inexistente',
995
+ "examples": ['enbargo β†’ un Barco', 'enguados β†’ un grados'],
996
+ "warning": None,
997
+ },
998
+
999
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1000
+ {
1001
+ "htr": 'r',
1002
+ "gt": 'l',
1003
+ "type": "visual",
1004
+ "caligrafia": ['Encadenada'],
1005
+ "severity": "baja",
1006
+ "confidence": "baja",
1007
+ "tendencia": 'Astas ascendentes, Curva',
1008
+ "context": '',
1009
+ "examples": ['sueren β†’ suelen', 'subunar β†’ tribunal'],
1010
+ "warning": None,
1011
+ },
1012
+
1013
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1014
+ {
1015
+ "htr": 'a',
1016
+ "gt": 'te',
1017
+ "type": "visual",
1018
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
1019
+ "severity": "baja",
1020
+ "confidence": "baja",
1021
+ "tendencia": 'Astas ascendentes, MΓ­nimas',
1022
+ "context": 'EliminaciΓ³n de carΓ‘cteres; ConfusiΓ³n de carΓ‘cteres',
1023
+ "examples": ['para β†’ parte', 'tocana β†’ tocante'],
1024
+ "warning": None,
1025
+ },
1026
+
1027
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1028
+ {
1029
+ "htr": 'i',
1030
+ "gt": 'o',
1031
+ "type": "visual",
1032
+ "caligrafia": ['Encadenada'],
1033
+ "severity": "baja",
1034
+ "confidence": "baja",
1035
+ "tendencia": 'MΓ­nimas',
1036
+ "context": '',
1037
+ "examples": ['firma β†’ forma', 'santi β†’ santo'],
1038
+ "warning": None,
1039
+ },
1040
+
1041
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1042
+ {
1043
+ "htr": 'l',
1044
+ "gt": 'R',
1045
+ "type": "visual",
1046
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
1047
+ "severity": "media",
1048
+ "confidence": "media",
1049
+ "tendencia": 'Astas ascendentes, Trazos curvos',
1050
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1051
+ "examples": ['lio β†’ Rio', 'luego β†’ Ruego'],
1052
+ "warning": None,
1053
+ },
1054
+
1055
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1056
+ {
1057
+ "htr": 'Γ§',
1058
+ "gt": 'c',
1059
+ "type": "visual",
1060
+ "caligrafia": ['Encadenada'],
1061
+ "severity": "media",
1062
+ "confidence": "media",
1063
+ "tendencia": 'Astas descendentes, Curva',
1064
+ "context": '',
1065
+ "examples": ['En que tiΓ§ion β†’ ynquisicion', 'aletaΓ§ion β†’ acetacion'],
1066
+ "warning": None,
1067
+ },
1068
+
1069
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1070
+ {
1071
+ "htr": 't',
1072
+ "gt": 's',
1073
+ "type": "segmentation",
1074
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
1075
+ "severity": "baja",
1076
+ "confidence": "baja",
1077
+ "tendencia": 'Espacios, Trazos curvos',
1078
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1079
+ "examples": ['quiente β†’ quien se', 'talio β†’ salio'],
1080
+ "warning": None,
1081
+ },
1082
+
1083
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1084
+ {
1085
+ "htr": 'm',
1086
+ "gt": 'ni',
1087
+ "type": "segmentation",
1088
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
1089
+ "severity": "media",
1090
+ "confidence": "media",
1091
+ "tendencia": 'Espacios, Trazos curvos, Ligadura',
1092
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1093
+ "examples": ['amitiene β†’ ai ni tiene', 'eserivamas β†’ escrivanias'],
1094
+ "warning": None,
1095
+ },
1096
+
1097
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1098
+ {
1099
+ "htr": 'd',
1100
+ "gt": 'r',
1101
+ "type": "visual",
1102
+ "caligrafia": ['Encadenada', 'Procesal'],
1103
+ "severity": "media",
1104
+ "confidence": "media",
1105
+ "tendencia": 'Astas descendentes, Curva',
1106
+ "context": 'sustituye y elimina caracteres',
1107
+ "examples": ['dio β†’ rio', 'desta β†’ Repsta'],
1108
+ "warning": None,
1109
+ },
1110
+
1111
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1112
+ {
1113
+ "htr": 'u',
1114
+ "gt": 'a',
1115
+ "type": "visual",
1116
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
1117
+ "severity": "media",
1118
+ "confidence": "media",
1119
+ "tendencia": 'Curva, Trazos curvos',
1120
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1121
+ "examples": ['estuno β†’ estando', 'hostu β†’ hasta'],
1122
+ "warning": None,
1123
+ },
1124
+
1125
+ # [2x ocurrencias β€” 1 ejemplos ΓΊnicos]
1126
+ {
1127
+ "htr": 'de',
1128
+ "gt": 'se',
1129
+ "type": "visual",
1130
+ "caligrafia": ['Encadenada'],
1131
+ "severity": "baja",
1132
+ "confidence": "baja",
1133
+ "tendencia": 'Curva, MΓ­nimas',
1134
+ "context": '',
1135
+ "examples": ['de β†’ se'],
1136
+ "warning": None,
1137
+ },
1138
+
1139
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1140
+ {
1141
+ "htr": 'b',
1142
+ "gt": 'd',
1143
+ "type": "visual",
1144
+ "caligrafia": ['Encadenada', 'Procesal'],
1145
+ "severity": "baja",
1146
+ "confidence": "baja",
1147
+ "tendencia": 'Astas ascendentes',
1148
+ "context": 'ConfusiΓ³n de una letra b;d',
1149
+ "examples": ['rrobrigues β†’ rrodriguez', 'acaban β†’ acudan'],
1150
+ "warning": None,
1151
+ },
1152
+
1153
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1154
+ {
1155
+ "htr": 't',
1156
+ "gt": 'f',
1157
+ "type": "visual",
1158
+ "caligrafia": ['Italica_cursiva', 'Procesal'],
1159
+ "severity": "baja",
1160
+ "confidence": "baja",
1161
+ "tendencia": 'Astas ascendentes, OmisiΓ³n de carΓ‘cteres',
1162
+ "context": 'ConfusiΓ³n de carΓ‘cter',
1163
+ "examples": ['la tistazer β†’ satisfazer', 'tendo β†’ ofrenda'],
1164
+ "warning": None,
1165
+ },
1166
+
1167
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1168
+ {
1169
+ "htr": 'b',
1170
+ "gt": 't',
1171
+ "type": "visual",
1172
+ "caligrafia": ['Encadenada', 'Italica_cursiva'],
1173
+ "severity": "alta",
1174
+ "confidence": "alta",
1175
+ "tendencia": 'Astas ascendentes',
1176
+ "context": 'EliminaciΓ³n de espacio; incersiciΓ³n de espacios; confusiΓ³n de carΓ‘cteres',
1177
+ "examples": ['tero coblano β†’ tepoΓ§otlan', 'el ben β†’ esten'],
1178
+ "warning": None,
1179
+ },
1180
+
1181
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1182
+ {
1183
+ "htr": 'l',
1184
+ "gt": 'd',
1185
+ "type": "visual",
1186
+ "caligrafia": ['Encadenada'],
1187
+ "severity": "alta",
1188
+ "confidence": "alta",
1189
+ "tendencia": 'Astas ascendentes',
1190
+ "context": 'reemplaza caracteres',
1191
+ "examples": ['los β†’ dos', 'luego β†’ diego'],
1192
+ "warning": None,
1193
+ },
1194
+
1195
+ # [2x ocurrencias β€” 1 ejemplos ΓΊnicos]
1196
+ {
1197
+ "htr": 'h',
1198
+ "gt": 'f',
1199
+ "type": "visual",
1200
+ "caligrafia": ['Encadenada'],
1201
+ "severity": "media",
1202
+ "confidence": "media",
1203
+ "tendencia": 'Astas ascendentes',
1204
+ "context": 'reemplaza caracteres',
1205
+ "examples": ['handadas β†’ fundadas'],
1206
+ "warning": 'NO_CORREGIR: tanto f- como h- son grafΓ­as vΓ‘lidas en s.XVI.',
1207
+ },
1208
+
1209
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1210
+ {
1211
+ "htr": 'm',
1212
+ "gt": 'tr',
1213
+ "type": "visual",
1214
+ "caligrafia": ['Encadenada'],
1215
+ "severity": "media",
1216
+ "confidence": "media",
1217
+ "tendencia": 'Astas ascendentes',
1218
+ "context": 'reemplaza caracteres',
1219
+ "examples": ['mas β†’ tras', 'demas β†’ detras'],
1220
+ "warning": None,
1221
+ },
1222
+
1223
+ # [2x ocurrencias β€” 1 ejemplos ΓΊnicos]
1224
+ {
1225
+ "htr": 'h',
1226
+ "gt": 'tr',
1227
+ "type": "visual",
1228
+ "caligrafia": ['Encadenada'],
1229
+ "severity": "alta",
1230
+ "confidence": "alta",
1231
+ "tendencia": 'Astas ascendentes',
1232
+ "context": 'reemplaza caracteres y agrega espacios',
1233
+ "examples": ['de has β†’ detras'],
1234
+ "warning": None,
1235
+ },
1236
+
1237
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1238
+ {
1239
+ "htr": 'ti',
1240
+ "gt": 'tr',
1241
+ "type": "visual",
1242
+ "caligrafia": ['Encadenada'],
1243
+ "severity": "alta",
1244
+ "confidence": "alta",
1245
+ "tendencia": 'Astas ascendentes',
1246
+ "context": 'reemplaza y elimina caracteres',
1247
+ "examples": ['catidad β†’ catredal', 'cantie β†’ chantre'],
1248
+ "warning": None,
1249
+ },
1250
+
1251
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1252
+ {
1253
+ "htr": 'd',
1254
+ "gt": 'ct',
1255
+ "type": "visual",
1256
+ "caligrafia": ['Encadenada'],
1257
+ "severity": "alta",
1258
+ "confidence": "alta",
1259
+ "tendencia": 'Astas ascendentes',
1260
+ "context": 'reemplaza caracteres',
1261
+ "examples": ['Sanda β†’ Sancta', 'banda β†’ sancta'],
1262
+ "warning": None,
1263
+ },
1264
+
1265
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1266
+ {
1267
+ "htr": 'b',
1268
+ "gt": 'h',
1269
+ "type": "visual",
1270
+ "caligrafia": ['Encadenada'],
1271
+ "severity": "media",
1272
+ "confidence": "media",
1273
+ "tendencia": 'Astas ascendentes',
1274
+ "context": 'reemplaza caracteres',
1275
+ "examples": ['borden β†’ horden', 'dieba β†’ dicha'],
1276
+ "warning": None,
1277
+ },
1278
+
1279
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1280
+ {
1281
+ "htr": 'ch',
1282
+ "gt": 'cti',
1283
+ "type": "visual",
1284
+ "caligrafia": ['Encadenada'],
1285
+ "severity": "alta",
1286
+ "confidence": "alta",
1287
+ "tendencia": 'Astas ascendentes',
1288
+ "context": 'reemplaza caracteres',
1289
+ "examples": ['sanchesso β†’ sanctissimo', 'sanchesino β†’ sanctissimo'],
1290
+ "warning": None,
1291
+ },
1292
+
1293
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1294
+ {
1295
+ "htr": 'Y',
1296
+ "gt": 'L',
1297
+ "type": "visual",
1298
+ "caligrafia": ['Italica_cursiva'],
1299
+ "severity": "media",
1300
+ "confidence": "media",
1301
+ "tendencia": 'Astas ascendentes',
1302
+ "context": 'ConfusiΓ³n de caractΓ©res: L por Y, inserciΓ³n de espacio',
1303
+ "examples": ['Y a β†’ La', 'Ya β†’ La'],
1304
+ "warning": None,
1305
+ },
1306
+
1307
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1308
+ {
1309
+ "htr": 'e',
1310
+ "gt": 'a',
1311
+ "type": "segmentation",
1312
+ "caligrafia": ['Italica_cursiva'],
1313
+ "severity": "baja",
1314
+ "confidence": "baja",
1315
+ "tendencia": 'Trazos curvos',
1316
+ "context": 'ConfusiΓ³n de carΓ‘cteres: a por e',
1317
+ "examples": ['carte β†’ carta', 'deste β†’ desta'],
1318
+ "warning": None,
1319
+ },
1320
+
1321
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1322
+ {
1323
+ "htr": 'u',
1324
+ "gt": 'v',
1325
+ "type": "segmentation",
1326
+ "caligrafia": ['Italica_cursiva'],
1327
+ "severity": "baja",
1328
+ "confidence": "baja",
1329
+ "tendencia": 'Astas ascendentes, Trazos diagonales',
1330
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1331
+ "examples": ['inconueniente β†’ inconveniente', 'Tauetas β†’ Gavetas'],
1332
+ "warning": None,
1333
+ },
1334
+
1335
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1336
+ {
1337
+ "htr": 's',
1338
+ "gt": 'c',
1339
+ "type": "segmentation",
1340
+ "caligrafia": ['Italica_cursiva'],
1341
+ "severity": "alta",
1342
+ "confidence": "alta",
1343
+ "tendencia": 'Astas descendentes, Trazos curvos',
1344
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1345
+ "examples": ['antrsgacion β†’ anticipacion', 'Casor dote β†’ Sacerdote'],
1346
+ "warning": None,
1347
+ },
1348
+
1349
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1350
+ {
1351
+ "htr": 'l',
1352
+ "gt": 'c',
1353
+ "type": "visual",
1354
+ "caligrafia": ['Italica_cursiva'],
1355
+ "severity": "baja",
1356
+ "confidence": "baja",
1357
+ "tendencia": 'Trazos curvos',
1358
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1359
+ "examples": ['liertos β†’ ciertos', 'laron β†’ caxon'],
1360
+ "warning": None,
1361
+ },
1362
+
1363
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1364
+ {
1365
+ "htr": 't',
1366
+ "gt": 'b',
1367
+ "type": "visual",
1368
+ "caligrafia": ['Italica_cursiva'],
1369
+ "severity": "alta",
1370
+ "confidence": "alta",
1371
+ "tendencia": 'Astas ascendentes, Astas descendentes',
1372
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1373
+ "examples": ['tazel β†’ bajel', 'teten β†’ lleben'],
1374
+ "warning": None,
1375
+ },
1376
+
1377
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1378
+ {
1379
+ "htr": 'o',
1380
+ "gt": 'i',
1381
+ "type": "segmentation",
1382
+ "caligrafia": ['Italica_cursiva'],
1383
+ "severity": "baja",
1384
+ "confidence": "baja",
1385
+ "tendencia": 'Trazos curvos',
1386
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1387
+ "examples": ['abrol β†’ abril', 'selli β†’ sello'],
1388
+ "warning": None,
1389
+ },
1390
+
1391
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1392
+ {
1393
+ "htr": 'e',
1394
+ "gt": 'c',
1395
+ "type": "segmentation",
1396
+ "caligrafia": ['Italica_cursiva'],
1397
+ "severity": "media",
1398
+ "confidence": "media",
1399
+ "tendencia": 'Trazos curvos, Trazos curvos, Ligadura',
1400
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1401
+ "examples": ['eserivamas β†’ escrivanias', 'oSertorillos β†’ escritorillos'],
1402
+ "warning": None,
1403
+ },
1404
+
1405
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1406
+ {
1407
+ "htr": 'a',
1408
+ "gt": 'i',
1409
+ "type": "visual",
1410
+ "caligrafia": ['Italica_cursiva'],
1411
+ "severity": "alta",
1412
+ "confidence": "alta",
1413
+ "tendencia": 'OmisiΓ³n de carΓ‘cteres',
1414
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1415
+ "examples": ['va β†’ Vida,', 'mas β†’ mis'],
1416
+ "warning": None,
1417
+ },
1418
+
1419
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1420
+ {
1421
+ "htr": 'a',
1422
+ "gt": 'i',
1423
+ "type": "segmentation",
1424
+ "caligrafia": ['Italica_cursiva'],
1425
+ "severity": "alta",
1426
+ "confidence": "alta",
1427
+ "tendencia": 'Trazos curvos',
1428
+ "context": 'ConfusiΓ³n de carΓ‘cteres; inserciΓ³n de espacio',
1429
+ "examples": ['la mosna β†’ limosna', 'la misma β†’ limosna'],
1430
+ "warning": None,
1431
+ },
1432
+
1433
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1434
+ {
1435
+ "htr": 'v',
1436
+ "gt": 'b',
1437
+ "type": "segmentation",
1438
+ "caligrafia": ['Italica_cursiva'],
1439
+ "severity": "media",
1440
+ "confidence": "media",
1441
+ "tendencia": 'Astas inclinadas',
1442
+ "context": 'ConfusiΓ³n de carΓ‘cteres',
1443
+ "examples": ['noviSiten β†’ no bisiten', 'aviseys β†’ abiseys'],
1444
+ "warning": 'NO_CORREGIR: b/v son intercambiables grΓ‘ficamente en s.XVI.',
1445
+ },
1446
+
1447
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1448
+ {
1449
+ "htr": 'c',
1450
+ "gt": '',
1451
+ "type": "segmentation",
1452
+ "caligrafia": ['Procesal'],
1453
+ "severity": "alta",
1454
+ "confidence": "alta",
1455
+ "tendencia": 'Astas descendentes',
1456
+ "context": 'Elimina palabras, cambia el sentido',
1457
+ "examples": ['de gente de corrido β†’ diego cortes de los rrios', 'traca β†’ traza'],
1458
+ "warning": None,
1459
+ },
1460
+
1461
+ # [2x ocurrencias β€” 2 ejemplos ΓΊnicos]
1462
+ {
1463
+ "htr": 'an',
1464
+ "gt": '',
1465
+ "type": "segmentation",
1466
+ "caligrafia": ['Procesal'],
1467
+ "severity": "media",
1468
+ "confidence": "media",
1469
+ "tendencia": '',
1470
+ "context": 'elimina caracteres',
1471
+ "examples": ['V. anco β†’ Vte y Γ§inco', 'tan parte. β†’ terio de frayles'],
1472
+ "warning": None,
1473
+ },
1474
+ ]
rag_corrector.py CHANGED
@@ -2,11 +2,10 @@
2
  rag_corrector.py
3
  ────────────────
4
  NΓΊcleo del sistema RAG.
5
-
6
  1. Detecta posibles errores HTR y grafΓ­as modernas en el texto de entrada.
7
  2. Recupera ejemplos similares del vector store (few-shot dinΓ‘mico).
8
  3. Construye el prompt con reglas, ejemplos y alertas.
9
- 4. Llama a GPT-4o y devuelve el texto corregido + trazabilidad.
10
 
11
  Uso:
12
  from rag_corrector import RAGCorrector
@@ -17,6 +16,7 @@ Uso:
17
  """
18
 
19
  import os
 
20
  from typing import List, Dict, Tuple
21
  from openai import OpenAI
22
  from dotenv import load_dotenv
@@ -25,16 +25,14 @@ from knowledge_base import HTR_ERROR_PATTERNS, GRAFIA_PATTERNS
25
 
26
  load_dotenv()
27
 
28
- MODEL = os.getenv("OPENAI_MODEL", "gpt-4o")
29
- TOP_K = int(os.getenv("TOP_K", 5))
30
 
31
  SYSTEM_PROMPT = """Eres un corrector especializado en documentos notariales y judiciales \
32
  espaΓ±oles del siglo XVI (castellano antiguo).
33
-
34
  Tu ÚNICA tarea es corregir los errores introducidos por el proceso automΓ‘tico de \
35
  reconocimiento de texto manuscrito (HTR). NO debes modernizar el texto bajo ninguna \
36
  circunstancia.
37
-
38
  REGLAS ABSOLUTAS β€” incumplirlas invalida la correcciΓ³n:
39
  1. Conserva SIEMPRE las grafΓ­as propias del s.XVI:
40
  fizo, fazer, hazer, merΓ§ed, vezino, mesmo, Γ§ibdad, escriuano,
@@ -43,20 +41,25 @@ REGLAS ABSOLUTAS β€” incumplirlas invalida la correcciΓ³n:
43
  3. Conserva abreviaturas y tildes voladas (qΜƒ, nro, dho, sr).
44
  4. Corrige SOLO lo que claramente sea un error HTR (grafema confundido visualmente).
45
  5. Si no estΓ‘s seguro de si algo es error HTR o forma s.XVI vΓ‘lida β†’ conserva el original.
46
- 6. Responde ÚNICAMENTE con el texto corregido. Sin explicaciones, sin comillas."""
 
 
 
47
 
48
 
49
  class RAGCorrector:
50
  def __init__(self, vector_store):
51
  self.vs = vector_store
52
- #self.client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
53
- self.client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL", "https://api.x.ai/v1"),)
 
 
 
54
  # ── API pΓΊblica ──────────────────────────────────────────────────────────
55
 
56
  def correct(self, htr_text: str, top_k: int = TOP_K, model: str = None) -> Dict:
57
  """
58
  Corrige un texto HTR usando RAG.
59
-
60
  Retorna dict con:
61
  corrected : str β€” texto corregido
62
  prompt : str β€” prompt completo enviado al LLM
@@ -70,7 +73,6 @@ class RAGCorrector:
70
  grafia_warns = self._detect_grafias(htr_text)
71
 
72
  prompt = self._build_prompt(htr_text, retrieved, htr_errors, grafia_warns)
73
-
74
  corrected = self._call_llm(prompt, model=model or MODEL)
75
 
76
  return {
@@ -85,9 +87,15 @@ class RAGCorrector:
85
  # ── DetecciΓ³n de patrones ────────────────────────────────────────────────
86
 
87
  def _detect_htr_errors(self, text: str) -> List[Dict]:
 
88
  found = []
89
  for p in HTR_ERROR_PATTERNS:
90
- if p["htr"] in text:
 
 
 
 
 
91
  found.append(p)
92
  return found
93
 
@@ -96,7 +104,8 @@ class RAGCorrector:
96
  found = []
97
  lower = text.lower()
98
  for p in GRAFIA_PATTERNS:
99
- if p["modern"].lower() in lower:
 
100
  found.append(p)
101
  return found
102
 
@@ -104,22 +113,22 @@ class RAGCorrector:
104
 
105
  def _build_prompt(
106
  self,
107
- htr_text: str,
108
- retrieved: List[Dict],
109
- htr_errors: List[Dict],
110
  grafia_warns: List[Dict],
111
  ) -> str:
112
 
113
  sections = []
114
 
115
- # Few-shot dinΓ‘mico: ejemplos recuperados
116
  if retrieved:
117
  examples = []
118
  for i, doc in enumerate(retrieved, 1):
119
  corr = "; ".join(doc["corrections"]) if doc["corrections"] else "β€”"
120
  examples.append(
121
  f"Ejemplo {i} [{doc['type']}, {doc['region']}, {doc['date']}]"
122
- f"caligrafia: {doc['caligrafia']}"
123
  f" (similitud={doc['score']}):\n"
124
  f" HTR: \"{doc['htr']}\"\n"
125
  f" GT: \"{doc['gt']}\"\n"
@@ -130,29 +139,63 @@ class RAGCorrector:
130
  + "\n\n".join(examples)
131
  )
132
 
133
- # Alertas de patrones HTR detectados
134
  if htr_errors:
135
- hints = "\n".join(
136
- f" β€’ '{p['htr']}' puede ser '{p['gt']}': {p['context']} (ej: {p['example']})"
137
- for p in htr_errors
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  )
139
- sections.append(f"POSIBLES ERRORES HTR DETECTADOS EN ESTE TEXTO:\n{hints}")
140
 
141
- # Alertas de grafΓ­as modernas
142
  if grafia_warns:
143
  warns = "\n".join(
144
  f" β€’ '{p['modern']}' β†’ mantener como '{p['ancient']}': {p['rule']}"
145
  for p in grafia_warns
146
  )
147
  sections.append(
148
- f"ALERTA β€” GRAFÍAS QUE NO DEBEN MODERNIZARSE:\n{warns}"
149
  )
150
 
151
  context_block = "\n\n".join(sections)
152
 
153
  return (
154
- f"{context_block}\n\n"
155
- f"TEXTO HTR A CORREGIR:\n\"{htr_text}\""
156
  if context_block
157
  else f"TEXTO HTR A CORREGIR:\n\"{htr_text}\""
158
  )
@@ -161,8 +204,8 @@ class RAGCorrector:
161
 
162
  def _call_llm(self, user_prompt: str, model: str = MODEL) -> str:
163
  response = self.client.chat.completions.create(
164
- model=model, # usa el modelo que llega, no el de .env
165
- temperature=0.1, # baja temperatura: reproducibilidad
166
  max_tokens=1024,
167
  messages=[
168
  {"role": "system", "content": SYSTEM_PROMPT},
 
2
  rag_corrector.py
3
  ────────────────
4
  NΓΊcleo del sistema RAG.
 
5
  1. Detecta posibles errores HTR y grafΓ­as modernas en el texto de entrada.
6
  2. Recupera ejemplos similares del vector store (few-shot dinΓ‘mico).
7
  3. Construye el prompt con reglas, ejemplos y alertas.
8
+ 4. Llama al LLM y devuelve el texto corregido + trazabilidad.
9
 
10
  Uso:
11
  from rag_corrector import RAGCorrector
 
16
  """
17
 
18
  import os
19
+ import re
20
  from typing import List, Dict, Tuple
21
  from openai import OpenAI
22
  from dotenv import load_dotenv
 
25
 
26
  load_dotenv()
27
 
28
+ MODEL = os.getenv("OPENAI_MODEL", "gpt-4o")
29
+ TOP_K = int(os.getenv("TOP_K", 5))
30
 
31
  SYSTEM_PROMPT = """Eres un corrector especializado en documentos notariales y judiciales \
32
  espaΓ±oles del siglo XVI (castellano antiguo).
 
33
  Tu ÚNICA tarea es corregir los errores introducidos por el proceso automΓ‘tico de \
34
  reconocimiento de texto manuscrito (HTR). NO debes modernizar el texto bajo ninguna \
35
  circunstancia.
 
36
  REGLAS ABSOLUTAS β€” incumplirlas invalida la correcciΓ³n:
37
  1. Conserva SIEMPRE las grafΓ­as propias del s.XVI:
38
  fizo, fazer, hazer, merΓ§ed, vezino, mesmo, Γ§ibdad, escriuano,
 
41
  3. Conserva abreviaturas y tildes voladas (qΜƒ, nro, dho, sr).
42
  4. Corrige SOLO lo que claramente sea un error HTR (grafema confundido visualmente).
43
  5. Si no estΓ‘s seguro de si algo es error HTR o forma s.XVI vΓ‘lida β†’ conserva el original.
44
+ 6. Presta especial atenciΓ³n a los errores marcados como [CRÍTICO] β€” son los de mayor \
45
+ impacto en la comprensiΓ³n del texto.
46
+ 7. NO corrijas ningΓΊn patrΓ³n marcado con ⚠ NO_CORREGIR β€” esas formas son vΓ‘lidas en s.XVI.
47
+ 8. Responde ÚNICAMENTE con el texto corregido. Sin explicaciones, sin comillas."""
48
 
49
 
50
  class RAGCorrector:
51
  def __init__(self, vector_store):
52
  self.vs = vector_store
53
+ self.client = OpenAI(
54
+ api_key=os.getenv("OPENAI_API_KEY"),
55
+ base_url=os.getenv("OPENAI_BASE_URL", "https://api.x.ai/v1"),
56
+ )
57
+
58
  # ── API pΓΊblica ──────────────────────────────────────────────────────────
59
 
60
  def correct(self, htr_text: str, top_k: int = TOP_K, model: str = None) -> Dict:
61
  """
62
  Corrige un texto HTR usando RAG.
 
63
  Retorna dict con:
64
  corrected : str β€” texto corregido
65
  prompt : str β€” prompt completo enviado al LLM
 
73
  grafia_warns = self._detect_grafias(htr_text)
74
 
75
  prompt = self._build_prompt(htr_text, retrieved, htr_errors, grafia_warns)
 
76
  corrected = self._call_llm(prompt, model=model or MODEL)
77
 
78
  return {
 
87
  # ── DetecciΓ³n de patrones ────────────────────────────────────────────────
88
 
89
  def _detect_htr_errors(self, text: str) -> List[Dict]:
90
+ """Detecta patrones de error HTR en el texto usando word boundaries."""
91
  found = []
92
  for p in HTR_ERROR_PATTERNS:
93
+ htr_val = p.get("htr", "")
94
+ # Ignorar patrones descriptivos (fusion_palabras, omision_*, etc.)
95
+ if "_" in htr_val or len(htr_val) > 10:
96
+ continue
97
+ pattern = r'\b' + re.escape(htr_val) + r'\b'
98
+ if re.search(pattern, text, re.IGNORECASE):
99
  found.append(p)
100
  return found
101
 
 
104
  found = []
105
  lower = text.lower()
106
  for p in GRAFIA_PATTERNS:
107
+ pattern = r'\b' + re.escape(p["modern"].lower()) + r'\b'
108
+ if re.search(pattern, lower):
109
  found.append(p)
110
  return found
111
 
 
113
 
114
  def _build_prompt(
115
  self,
116
+ htr_text: str,
117
+ retrieved: List[Dict],
118
+ htr_errors: List[Dict],
119
  grafia_warns: List[Dict],
120
  ) -> str:
121
 
122
  sections = []
123
 
124
+ # ── Bloque 1: Few-shot dinΓ‘mico (ejemplos recuperados) ────────────────
125
  if retrieved:
126
  examples = []
127
  for i, doc in enumerate(retrieved, 1):
128
  corr = "; ".join(doc["corrections"]) if doc["corrections"] else "β€”"
129
  examples.append(
130
  f"Ejemplo {i} [{doc['type']}, {doc['region']}, {doc['date']}]"
131
+ f" caligrafia: {doc.get('caligrafia', '?')}"
132
  f" (similitud={doc['score']}):\n"
133
  f" HTR: \"{doc['htr']}\"\n"
134
  f" GT: \"{doc['gt']}\"\n"
 
139
  + "\n\n".join(examples)
140
  )
141
 
142
+ # ── Bloque 2: Alertas de errores HTR detectados ───────────────────────
143
  if htr_errors:
144
+ # Ordenar: crΓ­ticos primero
145
+ SEV_ORDER = {"alta": 0, "media": 1, "baja": 2}
146
+ sorted_errors = sorted(
147
+ htr_errors,
148
+ key=lambda p: SEV_ORDER.get(p.get("severity", "media"), 1)
149
+ )
150
+
151
+ hints = []
152
+ for p in sorted_errors:
153
+ sev = p.get("severity", "media").upper()
154
+ htr_c = p.get("htr", "")
155
+ gt_c = p.get("gt", "")
156
+ context = p.get("context", "")
157
+ tendencia= p.get("tendencia", "")
158
+ warning = p.get("warning")
159
+
160
+ # Ejemplos: hasta 3 de la lista completa
161
+ ejemplos_raw = p.get("examples", p.get("example", ""))
162
+ if isinstance(ejemplos_raw, list):
163
+ ejemplos_str = "; ".join(ejemplos_raw[:3])
164
+ else:
165
+ ejemplos_str = ejemplos_raw
166
+
167
+ linea = (
168
+ f" β€’ [{sev}] '{htr_c}' puede ser '{gt_c}'\n"
169
+ f" Causa : {context}"
170
+ )
171
+ if tendencia:
172
+ linea += f"\n Tendencia: {tendencia}"
173
+ if ejemplos_str:
174
+ linea += f"\n Ejemplos : {ejemplos_str}"
175
+ if warning:
176
+ linea += f"\n ⚠ {warning}"
177
+
178
+ hints.append(linea)
179
+
180
+ sections.append(
181
+ "POSIBLES ERRORES HTR DETECTADOS EN ESTE TEXTO:\n"
182
+ + "\n\n".join(hints)
183
  )
 
184
 
185
+ # ── Bloque 3: Alertas de grafΓ­as modernas ─────────────────────────────
186
  if grafia_warns:
187
  warns = "\n".join(
188
  f" β€’ '{p['modern']}' β†’ mantener como '{p['ancient']}': {p['rule']}"
189
  for p in grafia_warns
190
  )
191
  sections.append(
192
+ "ALERTA β€” GRAFÍAS QUE NO DEBEN MODERNIZARSE:\n" + warns
193
  )
194
 
195
  context_block = "\n\n".join(sections)
196
 
197
  return (
198
+ f"{context_block}\n\nTEXTO HTR A CORREGIR:\n\"{htr_text}\""
 
199
  if context_block
200
  else f"TEXTO HTR A CORREGIR:\n\"{htr_text}\""
201
  )
 
204
 
205
  def _call_llm(self, user_prompt: str, model: str = MODEL) -> str:
206
  response = self.client.chat.completions.create(
207
+ model=model,
208
+ temperature=0.1,
209
  max_tokens=1024,
210
  messages=[
211
  {"role": "system", "content": SYSTEM_PROMPT},