ciudadania-alemana-trini-lopez

Herramientas para leer manuscrito alemán antiguo (Kurrent / Sütterlin)

Verificado el 2026-09-17 (modelos confirmados vía API de Hugging Face, Zenodo y GitHub).

Los documentos del caso están en Kurrent del siglo XIX (matrículas consulares, índices de Hamburgo, bautismo de Lübeck). Sütterlin es posterior (1911–1941). Conviene elegir modelos entrenados en siglo XIX.

Recomendación rápida

Si quieres… Usa
Resultado bueno sin programar Transkribus (web), modelo German Kurrent o German_Kurrent_XIX_pylaia
Gratis, local, en Python TrOCR dh-unibe/trocr-kurrent (Hugging Face)
Pipeline open source completo (segmentar página + reconocer) Kraken + modelo de Zenodo
Leer pocas entradas puntuales Claude u otro modelo con visión, con recortes ampliados (así se leyó la matrícula N° 687)

1. Transkribus — la opción más madura

2. TrOCR Kurrent (Hugging Face) — gratis y local

Uso mínimo:

# pip install transformers torch pillow
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image

proc = TrOCRProcessor.from_pretrained("dh-unibe/trocr-kurrent")
model = VisionEncoderDecoderModel.from_pretrained("dh-unibe/trocr-kurrent")

linea = Image.open("renglon.jpg").convert("RGB")   # una sola línea de texto
ids = model.generate(proc(images=linea, return_tensors="pt").pixel_values, max_new_tokens=128)
print(proc.batch_decode(ids, skip_special_tokens=True)[0])

3. Kraken — pipeline completo open source

Uso mínimo:

pip install kraken
kraken -i pagina.jpg salida.txt segment -bl ocr -m german_handwriting.mlmodel

Prueba real sobre nuestros documentos (2026-09-17)

Se corrieron los dos modelos gratuitos, localmente y en CPU, sobre 20 renglones recortados de la matrícula N° 687 y del índice de defunciones de Hamburgo. Scripts en ocr/.

Modelo Rendimiento en estos documentos
TrOCR dh-unibe/trocr-kurrent El mejor. Leyó bien nombres, fechas y frases completas (“den 5t. Jenner 1901. auf Grund”, “eingetragen”, “in Conzeptien unter Nr. 53”, “Vermehren”). Detectó que la palabra era Schutzscheines y corrigió una lectura humana. Falla con números sueltos (leyó 887 por 187) y con topónimos (Lübeck → “Jubel”).
Kraken + modelo Zenodo 7933463 Mucho más débil en este Kurrent (modelo general, no específico del siglo XIX). Útil solo como desempate: acertó el número “187” donde TrOCR falló.

Lecciones:

Consejos prácticos para estos documentos