Transcribing Genealogical Documents

Introduction

I did a small experiment with the transcription of old genealogical Dutch documents by the various LLMs.

The document I used for the test is the following birth certificate of a great-granduncle:

20250703_transcribing_genealogical_documents

I used the following prompt:

Transcribe the following Dutch document, which may include both handwritten and typed text. Transcribe everything uniformly and preserve all original line endings exactly as they appear. Do not retain any formatting such as bold or italics. Include any annotations, stamps, or marginalia in brackets. If any parts are unclear or illegible, mark them in a convenient and consistent way (e.g., [illegible]).

When I upload the document to ChatGPT 4o and use this prompt I get the following transcription (all parts in red contain errors):

No. 5502 Op heden den twaalfden Juli, achttien honderd zeven- ennegentig is voor ons, Ambtenaar van den Burgerlijken Stand der gemeente Rotterdam, verschenen: Theodorus Friethoff, oud vijf en dertig jaren, van beroep Kantoorbediende, wonende alhier, welke ons heeft verklaard, dat op den tienden dezer, des namiddags ten 6 ure, ten zijnen huize aan de Schiekade, alhier is geboren een kind van het mannelijk geslacht uit Christina Jacoba Pierik, zonder beroep, mede woonende alhier, zijne huisvrouw welk kind zal genaamd worden Cornelis Raverinus Joseph Marie Deze aangifte is aan ons gedaan in tegenwoordigheid van Van Pierre Holstein, oud negen en twintig jaren, van beroep Kantoorbediende, wonende alhier, en van Hermanus Hermanus van der Horst, oud vijf en dertig jaren, van beroep Kantoorbediende, wonende alhier. En hebben wij hiervan opgemaakt deze akte, welke na voorlezing is onderteekend door ons, de vader en de getuigen.

Although there are some errors, the quality of this transcription is quite good. For example, see the appendix to compare this with the much worse OCR version using Tesseract.

Measuring Transcription Quality

Given the “real” transcription of a document (the reference text), we can compute objective measurements of the correctness of candidate transcriptions.

For such a candidate transcription, we first compute the Levenshtein Distance: this is the minimum number of single-character edits (insertions, deletions, substitutions) required to transform the transcription into the reference text. If we normalize this number by dividing by the total number of characters in the reference text, we get the Character Error Rate (CER). This is the percentage of character-level errors relative to the reference text.

The lower the CER, the better the quality of a transcription. The reference text itself has a CER of 0.

The following table lists the CERs for transcriptions by various LLMs and OCR, in decreasing order:

ModelCER (%)
Claude Sonnet 3.716.58
Google 2.5 Flash17.34
Google 2.5 Pro17.96
ChatGPT 4.518.22
ChatGPT o4-mini-high18.47
ChatGPT 4.119.35
ChatGPT 4o19.72
ChatGPT o319.85
ChatGPT o4-mini19.85
Claude Opus_421.23
Claude Sonnet 421.36
Claude haiku_3.523.12
OCR82.66

Just as the CER measures correctness at the character level, we can do a similar measurement at the word level to get the Word Error Rate (WER). The CER focuses on precision at the character level, while the WER emphasizes semantic correctness at the word level. For example, given the reference sentence the quick brown fox, the candidate transcription the quickb rown fox has a CER of 2/19 ≈ 10.5% and a WER of 2/4 = 50%.

For the various models and our sample text, we get the following results:

ModelWER (%)
Google 2.5 Flash25.86
Google 2.5 Pro27.59
Claude Sonnet 3.730.17
ChatGPT o332.76
ChatGPT 4.532.76
Claude Sonnet 434.48
ChatGPT o4-mini-high34.48
Claude opus_435.34
ChatGPT o4-mini35.34
ChatGPT 4o36.21
ChatGPT 4.137.07
Claude haiku_3.541.38
OCR197.41

Conclusion

The best models for the transcription of the sample document are the Google models and Claude Sonnet 3.7.

From the ChatGPT models, the 4.5, o3, and o4-mini-high are the top transcription models. Practically, o4-mini-high is the most suitable, since o3 is quite slow at transcribing and the number of allowed calls for 4.5 is severely restricted (at least with the Plus subscription). Since all model transcriptions require thorough manual checking regardless and the performance differences between the models are relatively small, you could also simply use 4o.

Disclaimer

Disclaimer: This was just a quick test on one document with one prompt. The results give a rough idea but aren’t really enough to draw general conclusions about model performance.

Appendix: Transciption by OCR (tesseract)

Op heden den “@-2-- 2 alfa JE achttien honderd zoven-
ennegentig is voor ons, Ambtenaar van den Burgerlijken Stand der gemeente Rotterdam , verschenen:
foe “>
BSZ EEE ZA
Chee tow Eet as ——
7 , ee N '

WIS 7 ae cent jaren, van beroep Lier mene telde ,
wonerfde aarts ‚ welke ons heeft verklaard, dat op den- Lear. ens
ete. Kar ee TTE TTT es des Dror middags tea uur,

; Zee Cage Cunt “A. td. ala OY ators gta. EGEKe fla ta ——

TED alhier is geboren egn kind van het re» =" “ye geslacht uit

an ae - ail EE) * ’

( eee. Lain el ace cee Se Et mah
SA nan Er Ee A Ce, Jarrett a Leno arne ao Keer y)
Le AA a * ee Zoer ere mmm

5 “2D ' “yg ’
woe kind zal genaamd worden CO < Lo a ze eativ Aer petece
ae
pe > ~ Deze aangifte is aan ons gedaan in tegenwoordigheid van _ ae „Á 0 tened
Le x, OS a ee
ome ole Car —— ‚ oud Prop enen Looe. Lo jaren, van beroep
_ AC nnn Loo Coo che on ote? ‚ wonende OLE eee / en van
2 FL erb. Maremmen Granen lere KA, ond-24.00 «. SZ. a ee jaren,
" ' pee a
van beroep A ei Le er Bee. eter , wonendé er 2 Kab nn
En hebben wij hiervan opgemaakt deze akte, welke na voorlezing is ondertcekend door ons, Zee‘ a
en de getuige,

Appendix: Transcription by o4-mini-high

Op heden den twaalfden Juli achttien honderd zeven- ennegentig is voor ons, Ambtenaar van den Burgerlijken Stand der gemeente Rotterdam, verschenen: Theodorus Frietkhoff oud vijf en dertig jaren, van beroep Kantoorbediende, wonende alhier, welke ons heeft verklaard, dat op den tienden dezer des voormiddags te zes ure, ten zijner huis aan de Schiekade alhier is geboren een kind van het mannelijk geslacht uit Christina Jacoba Pierik, zonder beroep, mede wonende alhier, zijne huisvrouw, welk kind zal genaamd worden Cornelis Kaserinus Joseph Marié Deze aangifte is aan ons gedaan in tegenwoordigheid van Jan Rien Holstein, oud negen en twintig jaren, van beroep Kantoorbediende, wonende alhier, en van Adrianus Wilhelmus van der Kent, oud vijf en twintig jaren, van beroep Kantoorbediende, wonende alhier, En hebben wij hiervan opgemaakt deze akte, welke na voorlezing is onderteekend door ons, den vader, en de getuigen

Appendix: Transcription by 4.5

Op heden den twaalfden Juli achttien honderd zevenennegentig is voor ons, Ambtenaar van den Burgerlijken Stand der gemeente Rotterdam, verschenen: Theodorus Friethoff oud vijf en dertig jaren, van beroep kantoorbediende, wonende alhier, welke ons heeft verklaard, dat op den tienden derzer, des voor middags te elf uur, ten zijnen huize aan de Schiekade, alhier is geboren een kind van het mannelijk geslacht uit Christina Jacoba Pierik, zonder beroep, mede wonende alhier, zijne huisvrouw welk kind zal genaamd worden Cornelis Xaverius Joseph Marie van Leeuwe. Deze aangifte is aan ons gedaan in tegenwoordigheid van J.L. Holstein, oud negen en twintig jaren, van beroep kantoorbediende, wonende alhier en van Adrianus Marinus van der Neut, oud vijf en twintig jaren, van beroep kantoorbediende, wonende alhier. En hebben wij hiervan opgemaakt deze akte, welke na voorlezing is onderteekend door ons, den vader en de getuigen.

Appendix: Claude Sonnet 3.7

Op heden den twaalfden Juli achttien honderd zeven- ennegentir is voor ons, Ambtenaar van den Burgerlijken Stand der gemeente Rotterdam, verschenen: Theodorus Friethoff oud vijfendertig jaren, van beroep kantoorbediende, wonende alhier , welke ons heeft verklaard, dat op den tienden dezer , des voor middags te tien uur, ten zijnen huize aan de Schiekade, alhier is geboren een kind van het mannelijk geslacht uit Christina Jacoba Peerik, zonder beroep, mede wonende alhier, zijne huisvrouw welk kind zal genaamd worden Cornelis Xaverius Joseph Marie Deze aangifte is aan ons gedaan in tegenwoordigheid van Jan Lieuwe Volstein , oud negenentwintig jaren, van beroep kantoorbediende, wonende alhier en van Adrianus Marinus van der Neut, oud vijfentwintig jaren, van beroep kantoorbediende, wonende alhier En hebben wij hiervan opgemaakt deze akte, welke na voorlezing is onderteekend door ons, den vader en de getuigen