AI for OCR?

With the AI hype of ever new LLMs coming to the scene, each with its own specific capabilities, I thought I’d give some vision models a test drive for OCR (optical character recognition) of documents.

Meta’s new LLama 3.2 Vision model purports to have this capability, among other things, at least according to the presentation page which mentions OCR capabilities. And I stumbled upon this article which explains how to use the Llama Vision model for OCR. The suggested prompt in the Medium article is:

Act as an OCR assistant. Analyze the provided image and:
1. Recognize all visible text in the image as accurately as possible.
2. Maintain the original structure and formatting of the text.
3. If any words or phrases are unclear, indicate this with [unclear] in your transcription.
Provide only the transcription without any additional comments.

I gave the model a test drive by pulling to my local ollama instance:

ollama pull llama3.2-vision

Then from my Open WebUI instance (which I spun up in a docker container), I chose the llama3.2-vision model (which defaults to the 11b version if I understand correctly), uploaded a document to the chat interface, and initially gave a simple prompt “extract the text from this image and maintain the formatting”, however the results were less than satisfactory. In the response, I was getting some text from the image, but a lot of text that did not come from the image.

So then I retried and gave the exact prompt as indicated in the Medium article. Since the text that I was trying to get extract was in Italian, my first attempt didn’t have any accented characters in the output, so I retried in a new chat writing the prompt itself in Italian (I read on stackoverflow that if you want accented characters in the output, you should probably have accented characters in the input prompt, so that the model knows that it can / should use accented characters):

Sei un assistente OCR. Analizza l’immagine e:
1. Riconosci tutto il testo visibile nell’immagine con acuratezza così come il testo si presenta, senza apportare modifiche grammaticali.
2. Mantieni la struttura originale e la formattazione del testo, tenendo conto che il testo è in lingua italiana.
3. Se una parola o una frase non ti è chiara, indica questo con [unclear] nella trascrizione.
Provvedi solo la trascrizione senza ulteriori commenti.

The response at this point did contain some accented characters, was more closely related to the text in the image, but the results were still far from satisfactory. Llama seems to like to make it’s own personal interpretations of the text, substituting words or even entire phrases. If I tried uploading a new image in the same chat window, asking it to perform the same job on the new image, it would start hallucinating and making up the text completely.

Here’s a sample image I uploaded:

With the prompt above, the response starting spitting out this text:

Gli Arabi chiamarono Maghreb, cioè l’Oriente, la parte settentrionale dell’Africa situata a ovest del’ Egitto, dalla Tripolitania al Marocco. Più precisamente, il Maghreb indica l’insieme dei paesi del nord-ov

And I just stopped it there. It would have continued hallucinating. The response is not coherent with the original text. It substituted “Occidente” (West) with “Oriente” (East)!

I gave it one more shot today to see if it would do any better, but again the results were mostly hallucinations:

L’immagine presenta una pagina di un libro in italiano con il titolo “L’Africa del Nord”. La pagina è stata scansionata da un dispositivo di scansione e ha subito alcuni errori di riconoscimento ottico dei caratteri (OCR) che hanno causato la perdita o la confusione di alcune lettere, soprattutto in parole lunghe. Questo è dovuto al fatto che il testo originale non era stato scansionato con precisione e le informazioni hanno subito alcuni errori durante il processo di riconoscimento ottico dei caratteri (OCR).

Ecco la trascrizione del testo:

L’Africa del Nord

Gli Arabi chiamarono Maghreb, cioè “Occidente”, la parte settentrionale dell’Africa situata a ovest dell’Egitto, dalla Tripolitania al Marocco. Più precisamente, il termine indica l’insieme dei paesi che si trovano nel nord-ovest dell’Africa: Marocco, Algeria e Tunisia.

Per i Romani l’Africa corrispondeva alla provincia di Cartagine e in seguito all’Africa Proconsolare comprendente: Numidia, Mauretania Sitifiana e Mauretania Cesariana. La Mauretania Tingitana (Tangeri) fu annessa alla diocesi civile della Spagna.

Il nostro pellegrinaggio – e quindi la nostra attenzione e il nostro interesse – si limitano alla Tunisia e all’Algeria; per l’incontro col mondo romano, per le tracce che rimangono ancora visibili delle città antiche, per il ricordo di un passato glorioso.

Ecco qui alcuni appunti sull’Africa del Nord:

  • La Tunisia: è uno dei paesi più densamente popolati dell’Africa. Gli abitanti sono in gran parte musulmani e la lingua ufficiale è l’arabo, ma anche il francese e l’italiano sono parlate ampiamente.
  • L’Algeria: è un altro paese con una grande densità di popolazione. Le principali città sono Algeri, Orano e Costantina. La lingua ufficiale è l’arabo, ma anche il francese e l’amazigh (lingua berbera) sono parlate ampiamente.
  • Il Marocco: è un paese con una densità di popolazione più bassa rispetto alle altre due nazioni. La capitale è Rabat e la lingua ufficiale è l’arabo, ma anche il francese e l’amazigh sono parlate ampiamente.

Questi appunti forniscono un’introduzione generale ai tre paesi del nord dell’Africa: Tunisia, Algeria e Marocco. Ognuno di questi paesi ha la propria storia, cultura e lingua ufficiale, ma anche una forte presenza della religione islamica.

The entire first paragraph is a comment about the given image having undergone an erroneous process of OCR (where does that come from? YOU ollama are supposed to be doing the OCR, NOW! Plus, I told you not to give any other comments, but to JUST perform the OCR yourself, ugh). Everything in red is completely hallucinated.

At this point, I decided to go back to using Google Lens from my smartphone, which does a near perfect job of OCR. Seems to me that AI still has a ways to go before perfecting the art of OCR. I just wish that Google Lens would work on desktop too and not just mobile.

Be First to Comment

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.