OCR and HTR: Getting handwritten text transcribed

We had a request from a faculty member for the purchase of Transcribus to transcribe older handwritten Spanish and French source material. We’d done some experimenting with transcribing text using various generic AI tools previously. As a result, I decided to take an example page in French and test it across a bunch of tools.

The source image is below. The source is Le Chaco et l’Orient bolivien by Louis-Émile Cerceau.

A handwritten page from a travel journal written in French. The writing is older style cursive and the image is decent but with some artifacts that make reading difficult.

Summary

You can see the various testing attempts below.1 This experience, again, points to the difficulty in verifying the output of AI models if you don’t have both the expertise and the time to do a thorough evaluation. I admit to spot checking and being inconsistent with just the mapping of characters (let alone the translation). It’s rough as a human to really parse results like this. I should have hand-transcribed one version and then run a mechanical test against it.

There are also so many tools out there. I stopped prior to running local models or diving too deeply into some of the options that are only available via API. You can see I got tired/bored2 towards the end and didn’t bother translating some of the tests.

I also learned that OCR is not the same at HTR. I did not realize that term existed until I got into this.

Transkribus was head and shoulders better than any of the generic AI chatbot options in terms of accuracy, user interface/experience, and accuracy. It preserves line breaks, presents the results side-by-side with the source material and connects them visually. You can fine-tune the model to your source material. It’s a great example of AI being used well in a tool built to do a specific thing. I think it gets at what Maggie Appleton is talking about when AI moves beyond the chatbot.

It’s also a coop founded outside the US with broad world-wide membership. You can’t beat their mission statement.

As a purpose-driven co-operative, our mission is to provide a comprehensive range of tools and services that empower researchers, institutions, and individuals to collaboratively discover and explore the rich tapestry of history. Our platform Transkribus covers the entire process of making historical documents accessible, from scanning and AI-assisted data extraction to online publication. We believe in fostering strong partnerships with stakeholders, reinvesting profits in our ecosystem, and championing social responsibility, all while delivering exceptional technology and support to our community.

So it does cost money for scale use but there’s some free usage options and I’d be happy giving money to this group. It’s exactly what I think universities ought to be doing rather than the recent USA pattern of trying to create mini-startups Silicon Valley style.

If Transkribus ends up not being an option, Gemini seemed to be the next best based on this limited testing. DeepSeek was the very worst of models in that it returned a result and that result was garbage. I feel it’s better not to give a result, like ChatGPT did.

 

Model: Claude Sonnet

Notes:

I think it’s missing the initial “mon”

Result:

… effet il me remis à mon ami qui devait me rejoindre un peu plus tard avec les deux autres. Le lieu du rendez-vous était Oran, dernier village algérien de la province de Salta avant la frontière bolivienne.

En prévision d’un voyage aussi long, durant lequel les animaux ont souvent à souffrir de la faim, j’avais, conseillé par toutes mes connaissances, échangé ma bonne mule qui m’avait amené de Tupiza, mais qui était un peu maigre, contre un animal beaucoup plus gros –

Parti à 6h du matin, je comptais bien coucher le soir à San Pedro qui est à 11 lieues de là. L’étape était un peu longue, mais j’avais en perspective plusieurs jours de repos forcé à Oran. Hélas! la mule grasse que je montais n’avait pas d’autre qualité que sa graisse. Après deux heures de route, quand je voulus la mettre au trot, elle refusa nettement d’avancer et me convainquit de l’inutilité de mes efforts par un argument sans réplique, car elle m’envoya rouler à plusieurs pas. Heureusement en milieu des pierres où je dus encore lui savoir gré de n’avoir pas pris la fuite et de s’être tranquillement laissé remonter. Un instant la pensée me vint de revenir en arrière, mais étant donné le motif de mon départ, qui était de vaincre l’indécision de mes compagnons, je jugeai prudent de continuer en avant, me résignant à marcher au pas.

Au bout de trois jours j’arrivai à San Pedro, décidé à troquer sans délai y perdre ma monture contre une meilleure. Le 14 Juillet au matin arriva une grande troupe de chars qui venait chargés de sucre à l’usine Araoz. Le propriétaire des chars était un Oranais avec lequel je fis connaissance et qui, le soir ayant fêté un peu joyeusement le 14 Juillet, m’offrit spontanément, séduit par l’orthodoxie de ma mule de me l’échanger contre un mulet qu’il me fit voir, affreusement maigre, mais qu’il me garantissait bon marcheur et infatigable.”

Translation:

“… he handed me over to my friend who was supposed to join me a little later with the two others. The meeting place was Oran, the last Algerian village in the province of Salta before the Bolivian border.

In anticipation of such a long journey, during which animals often suffer from hunger, I had, advised by all my acquaintances, exchanged my good mule that had brought me from Tupiza, but which was a bit thin, for a much fatter animal.

Having left at 6 in the morning, I fully expected to sleep that evening in San Pedro, which is 11 leagues away. The stage was a bit long, but I had the prospect of several days of forced rest in Oran. Alas! the fat mule I was riding had no other quality than its fat. After two hours on the road, when I tried to make it trot, it flatly refused to move forward and convinced me of the futility of my efforts with an unanswerable argument, as it sent me rolling several steps away. Fortunately among the stones where I still had to be grateful it hadn’t fled and had calmly allowed itself to be remounted. For a moment the thought came to me to turn back, but given the reason for my departure, which was to overcome the indecision of my companions, I deemed it prudent to continue forward, resigning myself to walking at a slow pace.

After three days I arrived at San Pedro, determined to trade without delay and lose my mount for a better one. On the morning of July 14th, a large group of carts arrived, coming loaded with sugar to the Araoz factory. The owner of the carts was a man from Oran with whom I became acquainted and who, having celebrated July 14th a bit joyfully that evening, spontaneously offered, enticed by the orthodoxy of my mule, to exchange it for a small mule that he showed me, frightfully thin, but which he guaranteed was a good walker and tireless.”

Model: GPT 4o and 4.5

Result:

Failed. It tries to do the OCR capture with Python but just returns garbage. I ran it a couple times. Didn’t seem worth additional effort.

Translation:

Model: Gemini 2.0 Flash

Notes:

Seems to preserve the line break pattern which might be useful.

Result:

(?)

mon effet et mes armes à mon ami qui devait me rejoindre un peu plus

tard avec les deux autres. Le lieu de rendez-vous était Oran, dernier

village argentin de la province de Salta avant la frontière bolivienne.

En prévision d’un voyage aussi long, durant lequel mes amis allaient

souvent à souffrir de la faim, j’avais, conseillé par toutes mes connaissances,

échangé ma bonne mule qui m’avait amené de Tupiza, mais qui était

un peu maigre, contre un animal beaucoup plus gras.

Parti à 6h du matin, je comptais bien coucher le soir à San

Pedro qui est à 18 lieues de là. L’étape était un peu longue, mais

j’avais en perspective plusieurs jours de repos forcé à Oran. Hélas! la

mule grasse que je montais n’avait pas d’autre qualité que sa graisse. Après

deux heures de route, quand je voulus la mettre au trot, elle refusa nettement

d’avancer et me convainquit de l’inutilité de mes efforts par un argument

sans réplique, car elle m’enrogea tout à plusieurs pas, heureusement au

milieu des herbes sèches. Je dus encore lui avouer que de n’avoir pas pris la

fuite et de s’être tranquillement laissé remonter. A cet instant la pensée me

vint de revenir en arrière, mais étant donné le motif de mon départ, qui

était de vaincre l’indécision de mes compagnons, je jugeai prudent de

continuer en avant, me résignant à marcher au pas.

Au bout de trois jours j’arrivai à San Pedro. Décidé à regagner

sans trop y perdre ma monture contre une meilleure. Le 14 juillet au

matin arriva une grande troupe de chars qui venaient charger du sucre à

l’usine Araoz. Le propriétaire des chars était un Allemand avec qui

je fis connaissance et qui le soir ayant fêté un jour joyeusement le

14 Juillet, m’offrit spontanément, séduit par l’embonpoint de ma mule,

de me l’échanger contre un mulet qu’il me fit voir, affreusement maigre,

mais qu’il se garantissait bon marcheur et infatigable.

Translation:

(Cross)

my effect and my weapons to my friend who was to rejoin me a little later with the other two. The meeting place was Oran, the last Argentinian village in the province of Salta before the Bolivian border.

In anticipation of such a long journey, during which my friends were often going to suffer from hunger, I had, advised by all my acquaintances, exchanged my good mule that had brought me from Tupiza, but which was a little thin, for a much fatter animal.

Having left at 6 a.m., I fully intended to sleep that evening in San Pedro, which is 18 leagues away. The stage was a bit long, but I had in prospect several days of forced rest in Oran. Alas! The fat mule I was riding had no other quality than its fatness. After two hours of riding, when I wanted to put it to a trot, it flatly refused to move forward and convinced me of the futility of my efforts with an unanswerable argument, for it threw me off several paces away, fortunately in the middle of dry grass. I still had to admit to it that it hadn’t run away and had calmly allowed itself to be remounted. At that moment, the thought came to me to turn back, but given the reason for my departure, which was to overcome the indecision of my companions, I deemed it prudent to continue forward, resigning myself to walking at a walking pace.

After three days I arrived in San Pedro. Determined to recover my mount against a better one without losing too much time. On the morning of July 14th, a large troop of carts arrived to load sugar at the Araoz factory. The owner of the carts was a German with whom I became acquainted and who, having celebrated the 14th of July joyfully that evening, spontaneously offered me, seduced by the plumpness of my mule, to exchange it for a mule he showed me, frightfully thin, but which he guaranteed to be a good walker and tireless.

Model: Copilot

Notes:

After an initial rejection, I was able to convince it that the copyright had lapsed because it was a historical document.

Required a PDF instead of a JPG.

Result:

podes

mus effet et mes armes à mon ami qui devait me rejoindre un peu plus

tout avec les Deux autres. Le hei de rendez-vous itail Oran, Dernier

village argentin de la provaice de falha avant la frontière boliviame.

Le En prévision d’un voyage aussi long, Durant lequel les animaux out

souvent à souffrir de la faim , J’avais, conseillé par toutes mes connaissances

échangé ma bonne mule qui m’avait amoré de Bupiza, mais qui était

un peu maizen, contre un animal beaucoup plus gras –

Part à 6ª du matin, je comptais bien commun le soir à San

Perto qué es à 18 lines de là- L’étape était un peu longue, mais

j’avais en perspective plusieurs jours de apos forcé à Oran. Hélas ! la

male glaser que je montais n’avait pas d’autre qualité que la graisse. après

Deux heures de route, quant je voulus la metter au tral, elle refusa nettement

D’avance et te convainquil de l’inutilité de mes effects por un argument

Saus réplique, car elle m’envoga rouler à plusieurs pas, heureusement au

milieu des herbes de, Je Dus encou lie savoir gré De n’avoir pas puis la

fuite el de d’être tranquilement faussé remonter. Un instant la pensée su

vind de revenir en arrière, mais étant donné le motif de mon départ, qui

était de variere l’indicision de mes compagnons, Ja jagrai pendant de

continuer en avant, une résignaud à marcher au pas –

Dena ll au bank de trois jours j’arrivais à San Pedro. Dendi à tour

sans trop y perdre ma monture contre une meilleure- Le 14 juil le au

matin arriva une grande fraufe de chass qui venaient charger Du sucre à

l’usine arroz- Le propriétaire des chars était un Bearnais avec que

Je fis connaissance el qui le soir ayant fêté un peu joyeusement le

14 Juillet m’offrir spontanemand, Duch por l’embonpoint os ma muller

De me l’échange contre un mules qu’il me for voir, affreusement maique,

mais qu’il ne garantisail bon mapscheur et infatigable –

Translation:

podes

my effect and my weapons to my friend who was supposed to join me a little later

with the other two. The meeting place was Oran, the last

Argentine village in the province of Salta before the Bolivian border.

In anticipation of such a long journey, during which the animals often

suffer from hunger, I had, advised by all my acquaintances,

exchanged my good mule that had brought me from Bupiza, but which was

a bit thin, for a much fatter animal.

Leaving at 6 in the morning, I planned to reach San

Pedro by evening, which is 18 leagues away. The stage was a bit long, but

I had several days of forced rest in Oran in perspective. Alas! the

mule I was riding had no other quality than its fat. After

two hours on the road, when I wanted to put it to the trot, it flatly refused

and convinced me of the futility of my efforts with an irrefutable argument,

as it sent me rolling several steps away, fortunately in the

middle of the grass. I had to be grateful that it did not run away and

allowed me to remount it quietly. For a moment, I thought of

turning back, but given the reason for my departure, which

was to vary the indecision of my companions, I decided to

continue forward, resigned to walking at a slow pace.

After three days, I arrived in San Pedro. There, I managed to

exchange my mount for a better one without too much loss. On the morning of July 14,

a large convoy of carts arrived to load sugar at the

arroz factory. The owner of the carts was a Béarnais with whom

I made acquaintance, and who, having celebrated July 14 a bit joyfully,

spontaneously offered, due to the plumpness of my mule,

to exchange it for a mule he showed me, terribly thin,

but which he guaranteed to be a good walker and tireless.

Model: Transkribus (standard)

Notes:

Connection between transcription and source material line

Generally more complex and specific transcription features

Result:

9

mes effets et mes armes à mon ami qui devait me rejoindre un peu plus

tard avec les deux autres. Le lieu du rendez-vans était Oran, dernier

village argentin de la prvice de Falta avant la frontière bolirienne.

En prévision d’un voyage aussi long, derant lequel les animanx ont

souvent à souffrir de la faim, j’avais, conseillé par toutes mes connaissances,

échangé ma bonne mule qui m’avait amené de Tusiza, mais qui était

un peu maiser, contre un animal beaucoup plus gras-

Parti à 6h du matin, je comptais bien coucher le soir à San

Pedro qui est à 18 lieues de là. L’étape était un peu longue, mais

j’avais eu perspective plusieurs jours de cepos forcé à Oran. Hélas! La

mule grasse que je montais n’avait pas d’autre qualité que sa graisse. Aprrès

deux heures de route; quand je voulus la mettre au frol, elle refusa nettement

d’avancer et ne convainquit de l’inutilité de mes efforts par un argennent

sans replique, car elle m’envoya rouler à plusieurs pas, heureusement au

milieu des herbes et je dus encore lui savoir gré de n’avoie pas pris la

faite et de s’être tranquilement laissé remonter. Un instant la pensée ne

vint de revenir en arrière, mais étant donné le motif de mon départ jai

était de vaincre l’indicision de mes compagnons, je jugeai pendant de

continuer en avant; me résignant à marcher au pas-

  1. Au baut de trois jours j’arrivai à San Pedro. doudi à troyuer

sans trop y perdre. ma monture contre une meilleure. Le 14 juillet au

matin arriva une grande transe de chars qui venaient charger du sucre à

l’usine araoz- Le propriétaire des chars était un Oeamais avec lequel

je fis connaissance et qui le soir ayant fêté un peu joyeusement le

14 Fuillet, m’offrit spontanément, séduit par l’emboupoint de ma mule,

de me l’échanger, contre un mulet qu’il ne fit voir, affreusement maigre,

mais qu’il ne garantissait bon marcheur et infaligable.

Translation:

(done in Chat GPT)

my belongings and my weapons to my friend who was supposed to join me a bit later with the other two. The meeting place was Oran, the last Argentine village in the province of Falta before the Bolivian border. Anticipating such a long journey, during which animals often suffer from hunger, I had, advised by all my acquaintances, exchanged my good mule, which had brought me from Tusiza but was somewhat thin, for a much fatter animal.

Setting off at 6 a.m., I expected to spend the night in San Pedro, eighteen leagues away. The stage was somewhat long, but I anticipated several days of forced rest at Oran. Alas! The fat mule I rode had no other quality than its fatness. After two hours on the road, when I wanted to urge it forward, it flatly refused to advance and convinced me of the futility of my efforts with an argument that permitted no reply, as it sent me rolling several steps away, fortunately onto the grass, and I had to thank it still for not fleeing and for calmly allowing itself to be mounted again. For a moment, the thought came to me of turning back, but given that the reason for my departure had been to overcome the indecision of my companions, I resolved instead to continue forward, resigning myself to walking at a slow pace.

At the end of three days, I arrived at San Pedro, where I managed to exchange my mount for a better one without too great a loss. On the morning of July 14th, a large caravan of carts arrived to load sugar at the Araoz factory. The owner of these carts was a man from Oran whom I got to know, and who, after having celebrated July 14th somewhat joyfully that evening, spontaneously offered—tempted by my mule’s plumpness—to exchange it with me for a mule he showed me, frightfully thin, but which he guaranteed as a good walker and tireless.

Model: DeepSeek

Notes:

This was terrible . . . unless all the others were wrong.

Result:

was affût et son amour à mon ami qui Donni me rejoindre un feu plus haut avec la peau autour. La fin du rally-race était Oran, premier village agréable de la fiorerie de Gilles avant le féminin britannique.

La fiorerie d’un voyage aussi long, donna droit de nouveau une épreuve à l’affair de la fiorerie, j’avais conseillé par traiter mes connaissances, échangé ma bonne main qui m’avait amené de brefage, mais qui était une jeune magie, tandis un sourire beaucoup plus grave.

J’ai été dit malade, je comptais bien comme il soit à leur flèvre qui est à 18 heures de 12 à 1’hôpital, dont une jeune loge ou, mais j’avais un justificatif plusieurs jours de type forcé à Oran. Puis ! la seule grosse vue je montais n’avait pas d’autre qualité que la grosse. Mais Dieu Aucus de toute, quand je voulus la mettre au fond, elle refuse retrouvé d’avance de sa communauté de l’institut de ma effort par un agréant, sans inférieure, car elle m’envoya toute à plusieurs fois, haussement en milieu des Arabes de fiorerie, lui garant qu’on n’avait pas pu se faire et à l’étrangement leurs rencontres. Un instant le pouvoir avait réellement envahi, mais dans le motif de mon dégoût, j’ai choisi de remémorer l’évolution de ma compagnon, je jetai jusqu’à la conclusion suivante, ne désignant à manoir en face.

On tenait de trois jours j’assirai à San Pedro, puis à tenir une signe pour ma marbre couleur aux muilleurs. À 14 juillet un matin suivis une grande étude de choses qui revenait chargée à son mari l’écrité Crazy- de propriétés. De choses dont un Occamand avec époux je fis connaissance et qui, il sera ayant fait un feu joyeusement lié d’Étilité, m’affût spontanément. Dont par l’embarquation de ma main de ma pleineigne tendu un matin qu’il ne fit voir, effouvement maigre, mais qu’il ne garantissait bon argument si infatigable…

Translation:

was the stock and his love to my friend Donni, who joined me around a higher fire with the skin. The end of the rally-race was Oran, the first pleasant village of Gilles’ flourishes before the British feminine.

The flourishes of such a long journey once again entitled me to an ordeal in the affair of flourishes. I had advised treating my acquaintances, exchanged my good hand that had brought me from briefage, but which was a young magic, while a much graver smile.

I was told I was ill; I fully counted on their fever, which is from 18 hours to 12 at the hospital, where a young lodge or—but I had a justification for several days of forced type in Oran. Then! The only big view I mounted had no other quality than its bigness. But God Aucus of all, when I tried to put it at the bottom, she refused to be found in advance by her community of the institute of my effort through an approver, without inferiority, for she sent me all at once, raising amidst the Arabs of flourishes, assuring him that they could not make themselves and to the estrangement of their encounters. For a moment, power had truly invaded, but in the motif of my disgust, I chose to recall the evolution of my companion. I threw myself to the following conclusion, pointing no manor ahead.

We held for three days; I attended San Pedro, then to hold a sign for my marble color to the best. On the morning of July 14th, I followed a great study of things that returned loaded to her husband, the written Crazy- of properties. Of things, an Occamand with a spouse I met—who, having made a fire joyously linked to Étilité, spontaneously stocked me. From the embarkation of my hand of my full-stretch, offered one morning he did not show, frightfully thin, but he guaranteed no good argument, though tireless…

Model: Apple Vision

Notes:

This is available on Mac’s when opening a document or image in preview and selecting with Tools > Text Selection

Result:

nes effett el mes armes à mon ami qui devait ne refeindra un peu pau fano avec la Deur autres.

Le hai de rendeg-vaus itaie Oran, dernier

village argentin de la provnic de Falha arant la froncia bolivena.

En prévisin d’un Voyage aussi long, derant lequel lo animaux ol sauvent à touffrir de la faim, j’arsio, concillé par foules mes connaissances, échangé ma bane mula qui m’avail amoné de bupiza, mais qui était en peu maiza, contre un ammal beaucoup plus gras –

Parti à 6º du malie, je comptais bien comte le soir à San

Pero qui es à 18 lives de là _ L’éhape ébail en peu lougue, mais

farais en pespective pluscuss fauo de upos forcé à Osan. Hélas! la mule grace que j montais n’avait par d’autre qualiti que ya grause. Après Dea heures de route, quand je voulus la mette au hal, elle refusa nettemal d’avancer en me convainquil de l’ciutilité de neo effart por un argumen Jana replique, car elle neuroga roul à plusieurs pas, heureusement an milcia des herbes d, pedus encou lui savoir gué de n’avai pas puis la juit el De l’ihe tranquilement lausé remonter. Un stant la persei na vin de revenir en arceie, mais chaul donné le motif de mon départ, qui étail de vanier l’indecisin de mes compagnons, /2 jugeai perdant de contricer en avan, me résignant à mascher au pas-

Au bank de trois fous j’arrai à lan Pero, dai à tagur sous drop y pense ma montere contre une milleur. Le 14 Juille an matia ansiva ue grande froupe de chass qui venavil charges da sucre à

l’usine araoz – de proprietari des charo ihail un Deannais anec bpul le fir comeriance el qui. le soir ayant fité en peu joyeusement le

44 Juilel n’offit spontanémen, Jouir por l’enborpain e ma mul

Do se l’echange contra en mulet qu’il me fil voir, afrenomes

Translation:

Model: Pen2Txt

Notes:

Result:

(2) J’ai envoyé mes effets et mes armes à mon ami qui devait me rejoindre un peu plus tard avec les deux autres. Le lieu du rendez-vous était Oran, dernier village argentin de la province de Palha avant la frontière bolivienne. En prévision d’un voyage aussi long, durant lequel les animaux ont souvent à souffrir de la faim, j’avais, conseillé par toutes mes connaissances, échangé ma bonne mule, qui m’avait été amenée de Bupiza mais qui était un peu maigre, contre un animal beaucoup plus gras. Parti à 6 heures du matin, je comptais bien coucher le soir à San Pedro, qui est à 18 lieux de là. L’étape était un peu longue, mais j’avais en perspective plusieurs jours de repos forcé à Oran. Hélas ! la mule grasse que je montais n’avait pas d’autre qualité que sa graisse. Après deux heures de route, quand je voulus la mettre au trot, elle refusa nettement d’avancer et me convainquit de l’inutilité de mes efforts par un argument sans réplique, car elle m’envoya rouler à plusieurs pas, heureusement au milieu des herbes. Je dus lui savoir gré de n’avoir pas fui et de m’avoir tranquillement laissé remonter. Un instant, la pensée me vint de revenir en arrière, mais étant donné le motif de mon départ, qui était de varier l’indécision de mes compagnons, je jugeai préférable de continuer en avant, me résignant à marcher au pas. Deux ou trois jours plus tard, j’arrivai à San Pedro, un jeudi, sans trop y perdre ma monture contre une meilleure. Le 14 juillet au matin, arriva une grande troupe de chars qui venaient charger du sucre à l’usine Araoz. Le propriétaire des chars était un Béarnais avec qui je fis connaissance et qui, le soir, ayant fêté un peu joyeusement le 14 juillet, m’offrit spontanément, dû à l’embonpoint de ma mule, de me l’échanger contre un mulet qu’il me fit voir, affreusement maigre, mais qu’il me garantissait bon marcheur et infatigable.

 


1 Fat donkey. Skinny donkey. What’s not to love?

2 I’m pretty sure these end up being synonyms for me.