Bild till text med Tesseract OCR

2021-05-09 | Teknik

I detta inlägg testar vi Tesseract.

Tesseract är ett verktyg för att extrahera text ur bilder. Från Tesseracts Github-sida hittar vi installationsinstruktioner samt även hur verktyget används från commandline:

tesseract imagename outputbase [-l lang] [--oem ocrenginemode] [--psm pagesegmode] [configfiles...]

Första försöket

Vi testar på skärmdumpen nedan (oreda_schema_skarmdump.png):

Som ett första test omvandlar vi bilden till text med standardinställningarna:

➜ tesseract oreda_schema_skarmdump.png output
Tesseract Open Source OCR Engine v4.1.1 with Leptonica
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 150

Input är alltså vår skärmdump och som output vill vi ha en textfil (output.txt) med samma text som i skärmdumpen. Tesseract lägger till ”.txt” till ”output”, så resultatet sparas lokalt som output.txt. Vi har inte angett någon ”dpi”, så Tesseract gör en egen uppskattning.

Resultatet blir:

➜  cat output.txt
Oreda Schema

Oreda Schema ar ett schemaverktyg for pedagoger inom skola och férskola.
Verktyget lanserades i januari 2017 och anvands idag av ett tusental ldrare i Sverige
for att lagga klass- och lararscheman. Du kan ldsa mer har eller beséka hemsidan via
lanken nedan.

Hemsidan fér Oreda Schema: www.oredaschema.se

Ganska bra, men långt ifrån perfekt. Notera svårigheten med svenskans ’ä’ och ’ö’. Standardspråket för Tesseract är engelska, så verktyget försökte läsa ut engelska ur skärmdumpen med svensk text. Om vi ber Tesseract tolka texten som svenska istället för engelska bör resultatet bli bättre.

Lyckligtvis stödjer Tesseract många språk, också svenska. Men språket måste läggas till först.

Lägg till stöd för svenska

Språkpaketet för svenska heter swe.traineddata och kan hämtas här. För att Tesseract ska hitta språkpaketet behöver den finnas lokalt under <tesseract_installation_katalog>/share/tessdata (så t.ex. på en Mac med Homebrew blir sökvägen $(brew –prefix tesseract)/share/tessdata).

När språkpaketet ligger i rätt katalog går det sedan att kontrollera att svenska (swe) finns med:

➜  tesseract --list-langs
List of available languages (4):
eng
osd
snum
swe

Andra försöket

Svenskan finns med, så nu kan vi testa på nytt:

tesseract oreda_schema_skarmdump.png output -l swe

Resultatet i output.txt blir:

➜  cat output.txt
Oreda Schema

Oreda Schema är ett schemaverktyg för pedagoger inom skola och förskola.
Verktyget lanserades i januari 2017 och används idag av ett tusental lärare i Sverige
för att lägga klass- och lärarscheman. Du kan läsa mer här eller besöka hemsidan via
länken nedan.

Hemsidan för Oreda Schema: www.oredaschema.se

Nu blev resultatet helt rätt. Också rubrik och länkar.

Exemplet ovan ger en antydan till hur bra OCR-verktyg blivit under de senaste åren. En stor orsakerna kan förmodas vara deep learning, som numera används flitigt även i Tesseract.