Hvad er OCR?
Optisk tegngenkendelse (OCR) henviser til processen med automatisk at identificere tegn eller symboler, der tilhører et bestemt alfabet, fra et billede. I dette indlæg vil vi fokusere på at forklare, hvordan man bruger OCR på Android.
Når teksten på billedet er genkendt, kan den bruges til:
-
- Save it to storage.
- Behandle eller redigere det.
- Oversætte det til et andet sprog.
Populariteten af smartphones kombineret med stadig bedre kameraer har ført til en stigning i brugen af denne type genkendelsesteknikker og en ny kategori af mobilapps, der gør brug af dem.
På enheden eller i skyen?
Hvor man bruger et OCR-bibliotek, er det nødvendigt at beslutte, hvor OCR-processen skal foregå, på smartphonen eller i skyen.
Afhængigt af appens krav har hver tilgang sine fordele og ulemper.
Hvis appen f.eks. kræver, at man udfører tegngenkendelse uden internetforbindelse, vil OCR-motoren blive startet på selve enheden. På denne måde kan det undgås at sende billeder til en server, fordi kameraer monteret på aktuelle enheder kan tage store billeder.
På den anden side har OCR-biblioteker en tendens til at optage meget plads, da det er nødvendigt at downloade hvert af de sprog, der skal genkendes, som vi vil forklare nedenfor.
Hvilke biblioteker kan bruges?
I følgende link til Wikipedia er der en sammenlignende tabel med alle OCR-biblioteker, understøttede platforme, programmeringssprog, der er brugt i udviklingen, og andre relevante oplysninger.
Link: http://en.wikipedia.org/wiki/ List_of_optical_character_recognition_software
I dette indlæg vil vi bruge Tesseract-biblioteket, der skiller sig ud over de andre. Det er Open Source, har SDK, blev oprettet af HP og udvikles i øjeblikket af Google.
OCR på Android ved hjælp af Tesseract-biblioteket
Selv om Tesseract kan køres på en Linux-server som en cloud-tjeneste, vil vi i dette indlæg implementere Tesseract-biblioteket i en Android-app, der starter OCR-motoren på selve enheden.
Det oprindelige Tesseract-projekt til Android hedder Tesseract Android Tools og indeholder værktøjer til kompilering af Tesseract- og Leptonica-bibliotekerne til brug på Android-platformen samt et Java API til adgang til disse nativt kompilerede biblioteker.
Link: https://github.com/rebbix/tesseract-android-tools/tree/master/tesseract-android-tools
I vores eksempel vil vi bruge en fork af Tesseract Android Tools, som tilføjer flere funktioner.
Link: https://github.com/rmtheis/tess-two
OCR Eksempel på Android
Vi har brug for et par enkle trin for at udføre OCR på Android:
Overvejelser
- Kvaliteten af genkendelsen kan variere afhængigt af billedets lysforhold, kameraopløsning, tekstskrifttype, tekststørrelse og andre …
- For at opnå den højest mulige kvalitet er det meget vigtigt at centrere teksten i billedet, og at billedet er korrekt fokuseret.
Preview ved hjælp af OCR i en oversætter-app
Den følgende video viser en del af den app, jeg er ved at udvikle til mit eksamensafgangsprojekt (TFG), hvor jeg bruger de beskrevne OCR-teknikker.