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.
| 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) |
dh-unibe/trocr-kurrent — Universidad de Berna (Widmer, Hodel). Kurrent siglo XIX. Licencia MIT.
~5.900 descargas, actualizado ago-2026. https://huggingface.co/dh-unibe/trocr-kurrentdh-unibe/trocr-kurrent-XVI-XVII — misma familia, siglos XVI–XVIII (no es nuestra época).fhswf/TrOCR_german_handwritten — manuscrito alemán moderno, no histórico.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])
pip install kraken (versión actual 7.1.1; requiere Python 3.10+). Hace segmentación de página y
reconocimiento.german_handwriting.mlmodel). https://zenodo.org/records/7933463MGJamJam/htr_german_kurrent_model — 3 modelos Kraken + 1 Calamari, Kurrent siglo XIX
(tesis de licenciatura, 2025), con extractor de líneas y evaluación.Uso mínimo:
pip install kraken
kraken -i pagina.jpg salida.txt segment -bl ocr -m german_handwriting.mlmodel
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:
C:\ocr), porque rutas largas rompen
la instalación de pip (error WinError 206).