• No results found

OCR algoritmers noggrannhet och snabbhet vid identifieringen av text på olika typer av bakgrund : En jämförelse mellan OCR - algoritmerna Tesseract och Google ML-Kit

N/A
N/A
Protected

Academic year: 2021

Share "OCR algoritmers noggrannhet och snabbhet vid identifieringen av text på olika typer av bakgrund : En jämförelse mellan OCR - algoritmerna Tesseract och Google ML-Kit"

Copied!
45
0
0

Loading.... (view fulltext now)

Full text

(1)

OCR algoritmers noggrannhet och

snabbhet vid identifieringen av text på

olika typer av bakgrund

HUVUDOMRÅDE: Datateknik FÖRFATTARE: Ylli Sahiti

HANDLEDARE:Peter Larsson-Green

JÖNKÖPING 2021 juni

En jämförelse mellan OCR - algoritmerna Tesseract

och Google ML-Kit

(2)

Postadress:

Besöksadress:

Telefon:

Box 1026

Gjuterigatan 5

036-10 10 00

551 11 Jönköping

Detta examensarbete är utfört vid Tekniska Högskolan i Jönköping inom [se huvudområde på föregående sida]. Författarna svarar själva för framförda åsikter, slutsatser och resultat. Examinator: Anders Adlemo

Handledare: Peter Larsson-Green Omfattning: 15 hp (grundnivå)

(3)

Abstract

Purpose –

OCR, optical character recognition, algorithms can have a variety of implementations that could affect the results both when it comes to implementation and when it comes to the dataset it is applied to. It is therefore important to test the OCR algorithms on the specific dataset of interest to reliably predict how well it will do.

Method –

60 images are taken of table of contents written on Swedish food products the on three different background surfaces aluminum, convex and plastic. Two OCR algorithms, ML Kit and Tesseract has been compared regarding precision and processing speed, trying to find what possible difficulties each algorithm might have.

Findings –

Both ML Kit and Tesseract had most problems identifying characters from images with a lot of light reflection distorting the image. ML Kit showed some difficulties identifying characters on images with low resolution while Tesseract had a considerably harder time identifying characters on low resolution images. ML Kit was the best choice to fulfill the needs for this study.

Limitations-

Only two OCR algorithms were compared in the study. Food products with three different background surfaces were compared, aluminum, convex and plastic. Only precision and processing speed were compared where precision was compared in regard to total correct words and how close the predicted word was to the original scanned from the table of content. Keywords-

Tesseract, ML Kit, OCR algorithm, segmentation, Levenshtein, comparison, precision, speed, word per second, swedish food products, table of contents

(4)

ii

Sammanfattning

Syfte –

OCR, optical character recognition, algoritmer kan implementeras på olika sätt, de påverkar även resultatet både beroende på vilken implementation som används och vilket dataset som det används på. Därför är det viktigt att testa de olika OCR algoritmerna på just det dataset som är tänkt att användas för att få ett förutsägbart resultat.

Metod –

60 bilder är tagna på innehållsförteckningar tryckta på svenska livsmedelsprodukter med tre olika bakgrundsytor, aluminium, konvexa ytor och mjukplast. Två OCR algoritmer, ML Kit och Tesseract, har jämförts med avseende på precision och hastighet i syfte att hitta svårigheter för de respektive algoritmerna.

Resultat –

Båda undersökta OCR algoritmerna hade störst svårighet att identifiera tecken i bilder med reflektion. ML Kit hade färre problem med lågupplösta bilder, Tesseract hade anmärkningsvärt större problem med lågupplösta bilder. För ändamålet som studien avser så är ML Kit det bästa valet.

Begränsningar –

Enbart två OCR algoritmer jämförs i studien. Livsmedelsprodukter med tre olika bakgrundsytor har studerats, aluminium, konvex yta och mjukplast. Endast precision samt hastighet har jämförts. Precisionen har jämförts i antalet rätt ord samt hur nära en prediktering är från att vara helt rätt (Levenshtein algoritm).

Nyckelord –

hastighet, innehållsförteckning, jämförelse, Levenshtein, ML Kit, OCR algoritm, ord per sekund, precision, segmentering, svenska livsmedelsprodukter, Tesseract.

(5)

Innehållsförteckning

Abstract ... i

Sammanfattning ... ii

Innehållsförteckning ... iii

1

Introduktion ... 1

1.1 BAKGRUND ... 1 1.2 PROBLEMBESKRIVNING ... 2

1.3 SYFTE OCH FRÅGESTÄLLNINGAR ... 3

1.4 OMFÅNG OCH AVGRÄNSNINGAR ... 3

1.5 DISPOSITION ... 4

2

Metod och genomförande ... 5

2.1 DATAINSAMLING ... 5

2.2 FÖRBEHANDLING AV INSAMLAD DATA ... 5

2.3 DATAANALYS ... 7

2.4 TROVÄRDIGHET ... 8

3

Teoretiskt ramverk ... 9

3.1 OCRSEGMENTERING ... 9

3.1.1 Automatic thresholding ... 9

3.1.2 Wavelet energy feature ... 9

3.2 LEVENSHTEIN ... 10

3.2.1 FÖRBÄTTRAD LEVENSTEIN ... 11

4

Resultat ... 12

4.1 FEM PRODUKTER MED FLEST ORD ... 12

4.1.1 Italian Tomato Soup ... 12

4.1.2 Smörgås pickles ... 12

4.1.3 Mjukost salami ... 12

4.1.4 Bolognese ... 13

4.1.5 Carbonara ... 13

4.2 TRE PRODUKTER MED FLEST FEL ... 13

4.3 REFLEKTIVA YTOR ... 15

(6)

iv

5.1 MED VILKEN PRECISION KAN OCR ALGORITMERNA ML KIT OCH TESSERACT IDENTIFIERA

TEXT PÅ DE TRE OLIKA FÖRPACKNINGSYTORNA?... 18

5.2 HUR MÅNGA ORD PER SEKUND IDENTIFIERAR OCR ALGORITMERNA MLKIT OCH TESSERACT FRÅN TEXT SKRIVEN PÅ DE TRE FÖRPACKNINGSYTORNA? ... 18

5.3 FÖRBÄTTRAD LEVENSHTEIN ... 19

6

Diskussion och slutsatser ... 21

6.1FÖRBEHANDLING -MANUELL SEGMENTERING ... 21

6.2 RESULTAT ... 22

6.3 SVÅRIGHETER ... 22

6.4 BEGRÄNSNINGAR ... 24

6.5 SLUTSATSER OCH REKOMMENDATIONER ... 24

6.6 VIDARE FORSKNING ... 24

7

Referenser ... 26

Bilagor ... 27

BILAGA 1 ... 27 Aluminium ... 27 Mjukplast ... 30 Konvex yta ... 34 BILAGA 2 ... 38

(7)

1

Introduktion

1.1 Bakgrund

Algoritmer för Optical character recognition (OCR) används för att extrahera text ur bilder och det sker genom att algoritmerna tolkar enskilda tecken (Nielsen, 2015). OCR algoritmer har en högre igenkänning av tecken, givet att bilden är av hög kvalitet, exempelvis identifierar en algoritm skriven av Li Wan, Matthew Zeiler, Sixin Zhang, Yann LeCun och Rob Fergus 9 967 av 10 000 bilder på handskrivna siffror 0-9 rätt, vilket ger en precision på 99,67% (Nielsen). Men det finns tecken som OCR inte klarar av att identifiera och exempel på dessa kan ses i Figur 1.1 nedan.

Figur 1.1: Dessa tecken från Modified National Institute of Standards and Technology databasen (MNIST) kunde Li Wan, Matthew Zeiler, Sixin Zhang, Yann LeCun och Rob Fergus OCR algoritm inte identifiera. Det stora och handskrivna tecknet i mitten på rutan är bilden som skickades in i algoritmen. Siffran längst upp i högra hörnet är den rätta tolkningen av bilden, längst ner till höger är resultatet från algoritmens identifiering (Nielsen, Deep

learning, 2020).

När sökbarhet är ett krav för en databas där datan är sparad som bildfiler med filnamn som inte reflekterar det som bilden i databasen representerar kan OCR algoritmer användas för att göra det möjligt att söka på bildens innehåll, den metoden kallas för Dokument Image Understanding (Hakro & Talib, 2016). OCR algoritmen skannar bilden och extraherar text ur bilden som sedan går att söka på. Med denna metod kan en sökfunktion implementeras i databasen där det går att söka bland bildfiler efter sökord som förekommer i bilderna. Eftersom OCR algoritmer kan vara uppbyggda på många olika sätt, påverkas även resultatet beroende både implementation av algoritmen och vilken data som finns sparad i databasen. Datan kan till exempel bestå av inskannade textdokument eller ett fotografi där motivet är någon form av text. Exempel på detta är Adobe Acrobat som har textigenkänning inbyggt i programmet (Adobe, 2021). Efter att en bildfil öppnats, kan programmet skanna bilden efter text för att sen skapa ett sökbart PDF dokument.

OCR används också i Swedbanks mobilapplikation där användaren kan skanna sin faktura för att automatiskt fylla i betalningsinformationen (Swedbank, 2021). Skulle denna OCR algoritm misslyckas att läsa in rätt siffror kan alltså fel betalinformation fyllas i och leda till att betalningen inte når den tänkte mottagaren.

(8)

2

För att veta hur pålitlig predikteringen av en algoritm är behöver algoritmen testas på ett dataset som reflekterar problemområdet innan användning, för att man med större säkerhet ska kunna bedöma om det är tillräckligt bra för praktisk tillämpning (Nielsen, Neural Networks and Deep Learning, 2015).

1.2 Problembeskrivning

Enligt Kurshid, Faure och Vincent (2012) har traditionella OCR algoritmer svårigheter att läsa av bilder vars olika tecken överlappar med varandra eller är av så pass dålig kvalitet att tecknet inte längre är avläsningsbart. Andra områden där OCR algoritmer tenderar att ha problem är där tecken är skrivna på bakgrund med mycket bakgrundsbrus (Zagoris, Ergina, & Papamarkos, 2010), till exempel posterisering som kan ses i Figur 1.2. Posterisering sker när en bild har en färgton som successivt förändras men saknar den information som behövs för att återge den detaljnivån. Då lågupplösta bilder saknar nödvändig information för korrekt representation av den gradvis förändrade färgtonen, måste avrundningar ske. Dessa avrundningar visualiseras i en och samma färg, ända tills färgen förändrats så mycket att nästa nyans kan ritas. Det ger en effekt av två tydliga nyanser, i stället för en fin övergång mellan två nyanser.

Figur 1.2: Ett exempel på posterisering (Wikipedia, 2020).

Språk som till exempel Kannada script har visat sig vara en stor utmaning för OCR då deras alfabet har många tecken med väldigt liten variation mellan många av dessa tecken (figur 1.3).

Figur 1.3: Exempel på 8st tecken från Kannada script alfabetet (Omniglot, 2020).

En del metoder som används inom OCR har svårigheter att detektera text från bakgrund på reflektiva ytor (Lee, Cho, Jung, & Kim, 2010). Detta för att pixlarna i bilden på de påverkade områden saknas eller är förvrängt av reflektionen. Inom OCR forskning är det vedertaget att resultatet varierar mellan olika dataset (Nielsen, Neural Networks and Deep Learning, 2015). För att vara säker på hur en implementation presterar på ett specifikt dataset så måste det testas på just det specifika datasetet och inga antaganden kan med säkerhet göras.

Föreliggande studie görs på uppdrag av Sahiti Consulting AB. Företaget har utvecklat en androidapplikation som är tänkt att användas till att skanna innehållsförteckningen på svenska

(9)

livsmedelsförpackningar för att sedan extrahera texten. Applikationen är tänkt att användas genom att en bild tas på innehållsförteckningen på svenska livsmedel. Sedan extraheras texten för att ge en översikt av innehållet samt varna när allergena produkter upptäcks. Det är därför mycket viktigt att algoritmen har en hög precision, men får inte heller ta för långt tid för att vara användbar. Likt svårigheterna som OCR algoritmer kan ha med Kannada script och posterisering så har Sahiti Consulting AB identifierat bakgrunder som OCR algoritmer har svårigheter med att känna igen tecken tryckta på bakgrunderna aluminium, konvex yta, samt mjukplast som lätt veckas. Ett önskemål att åtminstone utvärdera ML Kit samt Tesseract OCR har framförts av företaget. Företaget vill att ett kommersiellt och ett open source bibliotek jämförs, de har tidigare erfarenhet av ML Kit och Tesseract och tycker att de är enkla att arbeta med samt har bra dokumentation.

1.3 Syfte och frågeställningar

Syftet med undersökningen är att undersöka precisionen samt hur precisionen förändras med efterprocesering med Levenshteins algoritm (Jurafsky, 2021). Med precision avses i detta arbete med hur många procents säkerhet ML Kit samt Tesseract extraherar text ur svenska livsmedels innehållsförteckningar.

Precisionen för varje bild och algoritm räknas ut med hjälp av formeln R = c/t, där R är en procentsats, c rätt antal ord,

t

totala antalet ord. Hastigheten för varje bild och algoritm

räknas ut genom flow rate formeln F=I/T, där F är ord per tidsenhet, I antalet ord och T den totala tid som det tar för algoritmen att analysera bilden.

För att kunna besvara syftet med arbetet har detta brutits ned i tre frågeställningar som följer nedan:

1) Med vilken precision kan OCR algoritmerna ML Kit och Tesseract identifiera text på de tre olika förpackningsytorna aluminium, konvexa ytor, samt mjukplast?

2) Hur förändras precisionen efter att efterprocesering med Levenshteins algoritm har använts?

3) Hur många ord per sekund identifierar OCR algoritmerna ML Kit och Tesseract från text skriven på de tre förpackningsytorna?

Ansatsen är att de två olika OCR algoritmerna uppvisar olika fördelar vad gäller precisionen och hur snabb algoritmen är beroende på vilken förpackningsyta som texten är tryckt på.

1.4 Omfång och avgränsningar

(10)

4

För att begränsa arbetets omfång reduceras detta till att endast inkludera två OCR algoritmer, nämligen OCR Tesseract (GitHub, u.å) version 4.1.1 och Google ML-Kit (Google, 2019) version 1.0.2.300, då företaget önskat detta.

En avgränsning för datasetet är förpackningar som har fler än en av dessa huvudgrupper, till exempel förpackningar som både är av aluminium och har konvex yta. Denna avgränsning är inkluderad i studien för att minimera risken för förvirrande faktorer (Creswell, 2008).

1.5 Disposition

Rapporten är disponerad enligt följande.

Kapitel 2 – Metod och genomförande.

Beskrivning av metod, hur datainsamlingen och förbehandling av insamlad data har gått till, dataanalysen samt att trovärdigheten diskuteras.

Kapitel 3 – Teoretiskt ramverk.

OCR beskrivs i teorin, Levenshtein algoritm samt den förbättrade Levenshtein algoritmen som används i studien.

Kapitel 4 – Resultat.

Resultatet presenteras för de två OCR algoritmerna, dels utan bearbetning, dels när den förbättrade Levenshtein algoritmen har använts på resultatet.

Kapitel 5 – Analys.

Analys av resultaten i förhållande till forskningsfrågorna.

Kapitel 6 – Diskussion och slutsats.

Diskussion av resultatet, metoden, svårigheter och begränsningar samt vidare forskning.

(11)

2

Metod och genomförande

För att besvara frågeställningarna har två OCR algoritmer jämförts med avseende på precisionen per ord samt läshastighet per ord. Varför ord valdes och inte enstaka tecken är för att det är väldigt viktigt att orden blev rätt när företaget använder applikationen eftersom det är identifieringen av hela ord som efterfrågas och då speciellt specifika termer avseende allergener och dylikt. Efterprocesering av orden gjordes med hjälp av Levenshtein algoritmen. Studien genomförs med hjälp av ett experiment med en kvantitativ ansats.

2.1 Datainsamling

I studien undersöktes bilder från tre olika förpackningsytor med 20 bilder per förpackningsyta, totalt 60 bilder. Samtliga bilder var tagna på produkter som återfanns hos Ica Nära i Gräshagen, Jönköping med en mobilkamera (12 megapixel) för att samla in data i den miljö som androidapplikationen kommer att användas i. Bilderna finns i Bilaga 1.

2.2 Förbehandling av insamlad data

Innan bilderna analyserades av de två olika OCR algoritmerna så behövdes de förberedas vilket gjordes genom att innehållsförteckningen klipptes ut från resterande bild. Anledningen till detta är för att endast OCR algoritmens bearbetning av innehållsförteckningen är av intresse i studien. Detta visualiseras i Figur 2.1 och 2.2.

Figur 2.1: Originalbild innan förbehandling. Figur 2.2: Bild efter förbehandling.

Nästa steg var att manuellt skriva ner innehållsförteckningen i en textfil med ett ord per rad. Reglerna som appliceras för detta var:

(12)

6

- Ett ord inkluderades även när en siffra eller en sifferkombination föregicks av en bokstav, det eftersom även E-nummer ska identifieras i innehållsförteckningen. Till exempel kommer 333 att sorteras bort men inte E333.

- Specialtecken sorterades bort. Med specialtecken menas i detta fall alla tecken som inte ingår i det svenska alfabetet eller är siffror mellan 0 - 9.

- Alla tecken gjordes om till versaler innan jämförelsen.

Namnet på den manuellt skrivna textfilen följer formatet; ”<namn på bildfil>-manuell.txt”.

Två androidapplikationer utvecklades med implementation av respektive OCR algoritm. Syftet med applikationerna var att ladda upp en bildfil (<namn på bildfil>.jpeg) där OCR identifierar all text i textfilen och skriver ut texten som har identifierats som ny textfil med namnet ”<namn

på bildfil>-<namn på OCR algoritm>.txt”, se Figur 2.3.

Namnet på den automatiskt skrivna textfilen följer formatet; ”<namn på bildfil>-<ocr

algoritm>.txt”.

Figur 2.3: Ett exempel på hur Tesseract androidapplikationen döper resultatfilen.

Slutligen skapades ett program som är skrevs i Python och som jämförde textfilerna som skapats från respektive OCR applikation med textfilen som skapades manuellt. Anledningen är att automatisera analysen av data. Exempel på hur dessa filer ser ut visas i Figur 2.4.

(13)

Figur 2.4: Första kolumnen visar den manuella textfilen. Den andra kolumnen visar hur ML Kit textfilen ser ut. Den tredje kolumnen visar hur Tesseract textfilen ser ut. Time elapsed är tiden, i millisekunder, det tog för algoritmen att analysera bilden.

Alla unika ord som återfinns på innehållsförteckningarna på förpackningarna har skrivits ner i en textfil som har använts som ett bibliotek för Levenshtein algoritmen.

2.3 Dataanalys

Bland de analyserade bilderna valdes fem stycken ut som hade en innehållsförteckning med flest antal ingredienser jämfört med de andra bilderna. Här analyserades precisionen för samtliga fem produkter samt tiden det tog för algoritmerna att analysera texten för respektive produkt. Precisionen räknades ut som antalet korrekta ord, där ett korrekt ord räknades om alla tecken var korrekta och utan hänsyn till versaler och gemener, då alla tecken gjordes om till versaler innan jämförelsen.

Sedan användes Levenshtein algoritm, som finns beskriven i kapitel 3.2, för att analysera samtliga 60 bilder. Tre av de bilder som uppvisade flest antal fel presenteras i kapitel 4.2. Detta görs för både Tesseract och ML Kit.

Den genomsnittliga precisionen för alla de 60 bilderna räknades sedan ut för de två OCR algoritmerna samt även precisionen per kategori samt precisionen per produkt.

Till slut analyserades potentiella svårigheter lågupplösta bilder, mycket reflektion, konvexa ytor, aluminiumförpackningar, mjukplast i kapitel 5.3.

(14)

8

2.4 Trovärdighet

Inga tidigare resultat har under förstudien identifierats där OCR algoritmer jämförts på innehållsförteckningen på svenska livsmedel. Det gör det svårt att i denna studie dra nytta av tidigare forskning.

Validiteten säkerställs genom att segmentera bort allt annat än innehållsförteckningen på respektive bild. I praktiken innebär det att man har klippt ut innehållsförteckningen med så lite marginal som möjligt för att minska risken att andra delar av originalbilden påverkar respektive algoritm, det kan till exempel vara andra ord som algoritmen läser in. En sådan segmentering kan på ett mycket lätt sätt implementeras för en slutanvändare. Det är även viktigt att de predikterade orden finns med i den ordlista som används vid förbättrad Levenstein i denna studie. Ordlistan består av 2280 ord som är vanligt förekommande i innehållsförteckningar på svenska. Ytterligare detaljer beskrivs i kapitel 2.2: Förbehandling av insamlade data samt 3.2.1: Förbättrad Levenshtein.

Reliabilitet säkerställs genom att hela processen är detaljerat beskriven och att alla uträkningar görs av ett datorprogram för att minimera risken för felkällor i form av felberäkningar. De förarbetade bilderna samt alla datorprogram som har används för uträkningar finns med i ett offentligt repository för att möjliggöra repeterbarhet. Mer detaljer kring vad denna git-repository innehåller samt länken dit finns i Bilaga 2. För ett repeterbart resultat behöver även samma versioner av OCR bibliotek användas som används i denna studie.

Studien ska ses som en vägledning för hur bra dessa algoritmer klarar av att analysera och extrahera text från innehållsförteckningar på svenska livsmedel, med hänsyn till precision och hur snabba algoritmerna är. Resultaten kan därför inte anses vara ovedersägliga eller ens 100% entydiga, då mer forskning krävs. Exempel på vidare forskning kan vara att undersöka hur ljusförhållanden påverkar algoritmerna, analysera ett större dataset eller inkludera fler algoritmer.

(15)

3

Teoretiskt ramverk

3.1 OCR Segmentering

Segmentering ett samlingsbegrepp på tekniker som används inom OCR (Sahare & Dhok, 2016).

När man segmenterar inom OCR försöker man extrahera text från bakgrund för att sedan analysera texten. En segmenteringsmetod går ut på att man försöker identifiera följande delar i texten;

- Block, ett textstycke - Word, ett ord - Stroke, pixlar

3.1.1 Automatic thresholding

En teknik är beskriven av Otsu (1979), där objekt differentieras från en bakgrund genom att skapa ett histogram av en bild. I histogrammet representerar x-led antalet pixlar i bilden och y-led representerar pixelvärdet i gråskala (värdet 0–255, där 0 innebär att pixeln är avstängt, dvs svart och 255 att pixeln är ljusast). Denna metod kallas för automatic thresholding (det finns ett flertal olika thresholding algoritmer som används för att segmentera bilder). Problemet med automatic thresholding vid textigenkänning är att det även inkluderar andra objekt utöver text (Sahare & Dhok, 2016), så vidare bearbetning av bilden är ofta nödvändigt.

3.1.2 Wavelet energy feature

Wavelet energy feature används för att detektera möjliga kandidatpixlar (objekt som i vårt fall

är ett tecken ur det svenska alfabetet eller siffra mellan 0 och 9) (Ye, Huang, Gao, & Zhao, 2005). Därefter används metoden region growing för att detektera tillhörande pixlar i omgivningen som hör till objektet. Detektion av tillhörande pixlar görs genom att först bestämma en pixel som startpixel. Sedan bestäms hur känslig algoritmen ska vara vid jämförelsen mot startpixeln (threshold). Till sist kontrolleras omgivande pixlar som jämförs med startpixeln för att avgöra om pixlarna tillhör startpixeln med hänsyn till threshold värdet man angivit. Figur 3.1 visar ett exempel på hur det kan se ut.

Figur 3,1: Ett visuellt exempel på region growing. Källa: https://en.wikipedia.org/wiki/Region_growing

(16)

10

Vad som är likvärdig bestäms genom att sätta ett thresholdvärde att förhålla sig till (Figur 3.2). Samtliga artiklar poängterar att ett återkommande problem inom textigenkänning är vinkeln som texten är skriven på. Olika tekniker används för att korrigera vinkeln innan bilden segmenteras. Efter att bilden har förbehandlats med vinkelkorrigering, segmentering och andra tekniker, måste texten slutligen identifieras.

3.2 Levenshtein

Edit distance är en metod som används inom datavetenskap när två strängar jämförs med

varandra, med målet att räkna ut hur mycket dessa strängar skiljer sig från varandra (Abdulkhudhur, Habeeb, Yusof, & Shahrul, 2016). En variant av Edit distance är Levenshtein algoritmen som jämför två strängar genom att räkna ut hur många operationer som behöver göras för att strängarna ska bli identiska. Operationerna som används är vanligen ”lägg till”, ”ta bort” samt ”ersätt”. Algoritmen kommer att göra flera försök att förändra strängarna så att de blir identiska och det sätt som kräver minst antal operationer är det svar som kommer att ges från algoritmen. Svaret ges i form av en siffra som står för antalet operationer. Nedan följer ett exempel som kort beskriver algoritmens funktionssätt:

Strängen ”ABC” och ”AXBC” ska jämföras. Båda strängarna börjar med bokstaven ”A”, strängarna är hittills identiska. Andra bokstaven i ”ABC” är ”B”, andra bokstaven i ”AXBC” är ”X” och här krävs en operation för att göra strängarna identiska. Ett sätt att göra det på är att byta ut andra bokstaven i ”AXBC” till ”B” vilket det ger att de två första bokstäverna i ”ABC” och ”ABBC” är identiska. Efter det krävs ytterligare en operation för att få den tredje bokstaven i ”ABBC” att stämma överens med den tredje bokstaven i ”ABC”. Strängarna är efter dessa operationer nu ”ABC” och ”ABCC”. Den sista operationen som behöver göras är att ta bort den fjärde bokstaven i ”ABCC” för att få strängarna identiska. Antalet operationer summeras till tre.

Ett annat sätt att förändra den andra strängen, ”AXBC”, så att den stämmer överens med den första strängen, ”ABC”, är: Den andra bokstaven i strängen ”AXBC” tas bort och blir då ”ABC”, efter den operationen så är de två jämförda strängarna identiska. Detta krävde bara en

operation och kommer alltså vara resultatet när Levenshtein algoritmen körs med dessa strängar. Figur 3.2 visualiserar det ovan beskrivna scenariot.

A

X

B

C

0

1

2

3

4

A

1

0

1

2

3

B

2

1

2

1

2

C

3

2

3

2

1

Figur 3.2: Ett visuellt exempel på matrisen som skapas vid jämförelsen kan se ut. Vertikala och horisontella hopp representerar operationer medan diagonala hopp representerar matchningar. Värdet längst ner till höger är det minsta antalet operationer som krävs för att få strängarna att bli identiska. Denna förklaring är en förenkling då algoritmen i grunden är mycket mer avancerad.

(17)

3.2.1 Förbättrad Levenstein

Ett vanligt sätt att använda sig av Levenshteins algoritm är att modifiera den så att alla operationer genererar olika mycket straffpoäng beroende på hur stort felet är (Jurafsky, 2021). Straffpoängen har i denna studie räknats ut så att både ”lägg till” och ”ta bort” operationerna genererar 10 poäng vardera då algoritmen antingen missat ett tecken eller lagt till ett extra tecken och räknas som största möjliga fel. Operationen ”ändra” genererar fel baserat på hur stort felet är. Till exempel registrerades det faktiska ordet E202 felaktigt som EZOZ. Levenshtein modifierades så att ”Z” matchar siffran ”2” med ett felvärde av 3 poäng och ”O” matchar siffran ”0” med ett felvärde av 1. Totalt får EZOZ värdet 7 om den skulle tolkas som E202. Sedan jämfördes det feltolkade ordet ”EZOZ” med en lista av ord från en ordlista som förutbestämts. Vad ordlistan innehåller för ord är mycket viktigt för den slutgiltiga precisionen. Det ord som genererat lägst felvärde är det ord som antas vara rätt ord. Är värdet 0 har en matchning skett utan att Levenshtein behövt använda operationer, då detta ord finns med i ordlistan. Experimentet kördes med två ordlistor, en stor och en liten. Den lilla ordlistan bestod av alla unika ord som funnits på förpackningarna i studien. Den stora ordlistan bestod av den lilla ordlistan samt ytterligare 1959 ord på olika ingredienser som Sahiti Consulting AB har sammanställt, den stora ordlistan bestod av totalt 2280 ord.

(18)

12

4

Resultat

4.1 Fem produkter med flest ord

De fem bilder med flest antal ord är Italian Tomato Soup (Figur 4.1), Smörgås pickles (Figur 4.2), Mjukost salami (Figur 4.3) , Bolognese (Figur 4.4) samt Carbonara (Figur 4.5). Dessa valdes ut för närmare analys i rapporten för att de innehåller mest data per bild att analysera.

4.1.1 Italian Tomato Soup

Italian Tomato Soup i kategorin mjukplast hade 41 ord (Figur 4.1). ML Kit hittade 36 av orden och Tesseract hittade 13 ord. Det ger en procentsats på 87,8% för ML Kit samt 31,7% för Tesseract. För ML Kit tog det 0,6 sekunder att bli klar och för Tesseract tog det 14,7 sekunder att bli klar. Det ger en genomsnittlig läshastighet på 78,4 ord per sekund (OPS) för ML Kit samt 3,3 OPS för Tesseract.

Figur 4.1: Italian Tomato Soup, mjukplast.

4.1.2 Smörgås pickles

Smörgås pickles i kategorin aluminium med 33 ord (Figur 4.2) hittade ML Kit 22 av orden och Tesseract hittade 19. En procentsats på 66,7% för ML Kit samt 57,6% för Tesseract. För ML Kit tog det 0,4 sekunder att bli klar och för Tesseract tog det 10,1 sekunder att bli klar. En genomsnittlig läshastighet på 71,2 OPS för ML Kit samt 2,8 OPS för Tesseract.

Figur 4.2: Smörgås pickles, aluminium.

4.1.3 Mjukost salami

Mjukost salami i aluminiumkategorin, med 30 ord (Figur 4.3) hittade ML Kit 26 av orden och Tesseract hittade 22. En procentsats på 86,7% för ML Kit samt 73,3% för Tesseract. ML Kit blev klar på 0,4 sekunder medan det tog 2,0 sekunder för Tesseract. En genomsnittlig läshastighet på 67,6 OPS för ML Kit samt 15,0 OPS för Tesseract.

(19)

Figur 4.3: Mjukost salami, aluminium.

4.1.4 Bolognese

Bolognese i kategorin konvexa ytor (Figur 4.4) med 30 ord. Resultaten blev 14 respektive 8 rätt för ML Kit samt Tesseract. Detta ger en 46,7% precision för ML Kit samt en 26,7% precision för Tesseract. Tiden det tog för ML Kit är 0,4 sekunder och 8,7 sekunder för Tesseract. Det innebär en OPS på 84,0 för ML Kit samt 3,5 för Tesseract.

Figur 4.4: Bolognese, konvex yta.

4.1.5 Carbonara

Carbonara i kategorin konvexa ytor (Figur 4.5). Produkten innehöll 30 ord varav 15 respektive 11 var korrekt identifierade av ML Kit samt Tesseract. Detta gav en procentsats på 50,0% samt 36,7% för ML Kit samt Tesseract. Den totala tiden det tog att bli klar var 0,4 sekunder för ML Kit samt 6,2 sekunder för Tesseract. OPS för ML Kit blev då 78,5 och för Tesseract 4,9.

Figur 4.5: Carbonara, konvex yta.

4.2 Tre produkter med flest fel

Levenshtein avstånd användes för att analysera texten från samtliga 60 bilder i arbete och de tre produkter per OCR algoritm med flest antal fel presenteras i rapporten.

En av de tre produkter där ML Kit hade flest fel är Bolognese (Figur 4.4). Av 30 ord, hade ML Kit totalt 43 fel, vilket är 1,43 fel per ord. Den produkt som ML Kit hade näst svårast för var Carbonara (Figur 4.5), med 30 ord och 37 fel, vilket är 1,23 fel per ord. Som trejde produkt med flest fel var wokgrönsaker (Figur 4.6) med 19 ord och 20 fel, vilket är 1,05 fel per ord.

Figur 4.6: Wokgrönsaker, konvex yta.

Tesseract hade som sin svåraste produkt Bolognese (Figur 4.4) med 30 ord och 132 fel, vilket är 4,40 fel per ord. Som andra produkt hade Tesseract svårigheter med Knorr ärtsoppa (Figur

(20)

14 Figur 4.7: Knorr ärtsoppa, konvex yta.

Som tredje och sista produkt, där Tesseract haft flest fel, finns Pesto Tomat (Figur 4.8) med 20 ord och 113 antal fel, vilket är 5,65 fel per ord.

(21)

4.3 Reflektiva ytor

För närmare undersökning av reflektiva ytor valdes ord med reflektion ut och kategoriserades i tre nivåer; nivå 1, nivå 2 samt nivå 3. Dessa nivåer valdes för att se hur precisionen påverkas beroende av hur mycket reflektion bilden innehåller, nivåernas procentsats är godtyckligt valda. Nivå 1 inkluderar ord där mindre än 20% av tecknen är påverkade av reflektionen. Nivå 2 inkluderar ord där reflektionen påverkar mellan 20% och 50% av tecknen. Nivå 3 inkluderar ord där fler än 50% av alla tecken är påverkade av reflektion. Figur 4.11 visar exempel på dessa nivåer. En komplett lista på alla ord och respektive klassificering finns i Bilaga 1.

Figur 4.11: Hårdodst och vatten är exempel på nivå 3. gräddgrönmögelost är exempel på nivå 2. smältsalter är exempel på nivå 1.

Dessa ord skannades med Levenshtein avstånd och jämfördes med originalordet. Som resultat utvanns en procentsats som representerar antalet fel respektive algoritm fick per tecken. Om svaret är över 1 (100%) innebär det att algoritmens prediktering haft fler fel än antalet tecken i orginalordet. Om ordet ‘E555’ blir predikterat som ‘FSSSS’ räknas de första 4 tecken som 4 fel då algoritmen predikterat fel tecken samt sista ‘S’ räknas som ett extra fel. Detta innebär att det är 5 fel på 4 tecken för ordet ‘E555’, vilket resulterar i 5 / 4 = 1.25 fel per tecken. Resultaten är ett genomsnitt. Tabell 4.1 sammanfattar resultaten för ML Kit samt utan hänsyn till förpackningsyta. Tabell 4.2 sammanfattar resultaten för ML Kit samt Tesseract uppdelat per förpackningsyta.

Tabell 4.1: Dessa tabeller visar hur mycket fel respektive OCR algoritm hade i procent enligt den implementerade Levenshtein algoritmen. Tabellen är statistik på det genomsnittliga felet utan hänsyn till förpackningsyta.

ML Kit

Antal ord Fel/tecken (%) Nivå 102 0.09

1 43 0.03

2 40 0.06

3 19 0.30

Tesseract

Antal ord Fel/tecken (%) Nivå 102 0.72

1 43 0.69

2 40 0.72

(22)

16

Tabell 4.2: Dessa tabeller visar hur mycket fel respektive OCR algoritm hade i procent enligt den implementerade Levenshtein algoritmen. Tabellerna är uppdelade per förpackningsyta.

ML Kit

Antal ord Fel/tecken (%)

Nivå 39 0.14

1 17 0.03

2 13 0.09

3 9 0.41

Antal ord Fel/tecken (%)

Nivå 15 0.17

1 7 0.05

2 5 0.15

3 3 0.48

Antal ord Fel/tecken (%)

Nivå 48 0.03 1 19 0.01 2 22 0.02 3 7 0.09 Aluminium Mjukplast Konvex Tesseract

Antal ord Fel/tecken (%)

Nivå 39 0.89

1 17 0.91

2 13 0.75

3 9 1.06

Antal ord Fel/tecken (%)

Nivå 15 0.61

1 7 0.61

2 5 0.60

3 3 0.64

Antal ord Fel/tecken (%)

Nivå 48 0.62 1 19 0.53 2 22 0.72 3 7 0.53 Aluminium Mjukplast Konvex

4.4 Precisionen med förbättrad Levenstein

Levenshtein algoritmen modifierades för att generera ett felvärde som baseras på hur stort felet är, från 1 till 10 där 1 är fel som genereras när algoritmen tolkar fel på till exempel bokstaven O och siffran 0 (noll) medan 10 är fel som anses osannolika som till exempel W tolkas som G.

Ursprungligen identifierade ML Kit 80% av alla ord som helt korrekt. Med den modifierade Levenshtein algoritmen där den stora ordlistan användes ökade precisionen från 80% till 94%. Det innebär att 67% av de feltolkade orden nu kunde identifieras korrekt. När den lilla ordlistan användes ökade precisionen från 80% till 95%. Det innebär att 74% av de feltolkade orden kunde identifieras korrekt.

Ursprungligen identifierade Tesseract 43% av alla ord som helt korrekt. Med den modifierade Levenshtein algoritmen där den stora ordlistan användes ökade precisionen från 43% till 58%. Det innebär att 26% av de feltolkade orden nu kunde identifieras korrekt. När den lilla ordlistan användes ökade precisionen från 43% till 60%. Det innebär att 29% av de feltolkade orden kunde identifieras korrekt. Resultaten är sammanfattade i Tabell 4.3.

Tabell 4.3: Sammanfattning på ursprungliga resultaten innan användningen av Levenshtein och efter användningen av förbättrad Levenshtein för både ML Kit och Tesseract.

(23)

Ordlista procent rätt antal fel förbättring procent rätt antal fel förbättring

Ursprunligen 80% 332 0% 43% 950 0%

Stort bibliotek 94% 108 67% 58% 702 26%

Litet bibliotek 95% 86 74% 60% 672 29%

(24)

18

5

Analys

5.1 Med vilken precision kan OCR algoritmerna ML Kit och Tesseract

identifiera text på de tre olika förpackningsytorna?

Precisionen räknades ut i tre olika nivåer, den genomsnittliga precisionen över alla bilder, precision per kategori samt precision per produkt.

Den övergripande precisionen för ML Kit blev 82 procent och precisionen för Tesseract blev 44 procent. Gällande precision per kategori fick ML Kit 86 procent på aluminium och Tesseract fick 50 procent. På mjukplast fick ML Kit 83 procent och Tesseract 40 procent. Slutligen fick ML Kit 77 procent på konvexa ytor och Tesseract fick 41 procent. (Tabell 5.1).

Tabell 5.1: Tabellen visar skillnaden i precision mellan ML Kit samt Tesseract.

Precision

ML Kit

Tesseract

Övergripande

82%

44%

Aluminium

86%

50%

Mjukplast

83%

40%

Konvex yta

77%

41%

5.2 Hur många ord per sekund identifierar OCR algoritmerna ML Kit och

Tesseract från text skriven på de tre förpackningsytorna?

Tabell 5.2 visar skillnaden mellan flest och minst antal ord per minut för respektive OCR algoritm och förpackningsyta. Den bild med flest ord hade 41 ord och med 12 ord per sekund (aluminium för ML Kit) innebär det att det i värsta fall skulle ta knappt fyra sekunder att få fram ett resultat för ML Kit. Med 41 ord och 0.2 ord per sekund skulle det i värsta fall ta Tesseract drygt (205 sekunder) tre minuter att få fram ett resultat. Den faktiska maximala tiden det tagit för Tesseract är 41 sekunder medan det längsta det tagit ML Kit är drygt en halv sekund.

Tabell 5.2: Tabellen visar ord per sekund för respektive OCR algoritmer och de tre olika förpackningsytorna.

Ord per sekund

Bakgrundsytor

Min

Max

Min

Max

Aluminium

12

78

0,2

21

Mjukplast

17

71

1,4

154

Runda

27

84

0,5

51

ML Kit

Tesseract

Vid närmare undersökning av standardavvikelsen blir det uppenbart att ML Kit är mer stabil i hur snabb den är. ML Kit har fler ord per sekund samtidigt som ML Kit har en stabilare standardavvikelse. Standardavvikelsen för Tesseract skiljer sig en hel del för de olika bakgrunderna. Mellan aluminium och mjukplast skiljer standardavvikelsen på Tesseract sig med en faktor av 6. (Tabell 5.3).

(25)

Tabell 5.3: Tabellen visar normalfördelningen för respektive OCR algoritm och de tre olika förpackningsytorna.

Ord per sekund

Bakgrundsytor

Väntevärde Standardavvikelse Väntevärde Standardavvikelse

Aluminium

53

18

8

6

Mjukplast

42

15

25

36

Runda

52

14

7

11

ML Kit

Tesseract

I sin helhet är skillnaden mycket mindre mellan ML Kit och Tesseract när det kommer till standardavvikelsen. Men när väntevärdet jämförs med standardavvikelsen per algoritm, blir det tydligt att Tesseracts hastighet fluktuerar väldigt mycket. Standardavvikelsen är nästan dubbelt så hög som väntevärdet (Figur 5.4).

Tabell 5.4: Tabellen visar den övergripande normalfördelningen för OCR algoritmerna.

Ord per sekund

Väntevärde Standardavvikelse

ML Kit

49

16

Tesseract

13

22

5.3 Förbättrad Levenshtein

Ursprungligen hade ML Kit 332 fel av totalt 1664 ord, vilket innebär att 20% av alla orden var både falskt positiva och falskt negativa predikteringar. Resultaten förbättrades anmärkningsvärt efter att de predikterade orden först söktes i den stora ordlistan efter liknande ord med hjälp av en modifierad version av Levenshtein och efteråt kunde ML Kit korrekt identifiera 224 ord av de 332 felaktigt identifierade orden. Det är en förbättring på 67%. En ytterligare förbättring skedde när den lilla ordlistan användes. Nu identifierade ML Kit totalt 246 ord av de ursprungliga 332 felen, vilket är en förbättring på 74%. Nu identifierade ML Kit 1578 ord av 1664 vilket innebär att 95% av alla orden helt korrekt kunde predikteras.

Ett återkommande fel som fortfarande uppkom var bland annat när ord från ordlistan stavades med versal medan ordet på förpackningen var gemen. Till exempel predikterades ordet ”äggula” som ”dggula” och det blir slumpen som avgör om det ska vara med litet ”ä” eller stort ”Ä”. Detta fel kan lätt rättas till genom att först konvertera orden till gemener eller versaler innan jämförelse.

Ett annat fel är där flera ord har lika högt straffvärde som till exempel det predikterade ordet ”soder”. Både ”socker” och ”Cider” genererade 20 straffpoäng, vilket var lägsta straffpoäng i jämförelserna med ordlistan. Det är därför väldigt viktigt att man lägger ner mycket tid på hur mycket straffpoäng varje tecken genererar för att på så sätt öka precisionen och eliminera fel där två olika ord är mycket lika för algoritmen.

(26)

20

Om man ska använda Levenshtein för att förbättra precisionen är det viktigt att användaren känner till produkterna som ska skannas mycket väl. På så sätt kan en ordlista skräddarsys där man endast har ord som kan dyka upp finns med. Missar man ett ord, kommer ordet inte att kunna identifieras även om OCR algoritmen korrekt skannat alla tecken.

(27)

6

Diskussion och slutsatser

6.1 Förbehandling - Manuell segmentering

Bilderna klipptes ut så att bara innehållsförteckningen fanns kvar. Att den extra bakgrunden klipptes bort kan ha underlättat för OCR algoritmen eftersom mönster och text kan förvirra OCR algoritmens segmentering som letar efter enskilda tecken. Om klippningen har gjorts nära ett tecken så kan det potentiellt ha påverkat OCR algoritmens förmåga att identifiera tecknet. Det kan ha påverkat både fördelaktigt och till en nackdel vid segmenteringen beroende på var och hur bakgrunden ser ut före och efter klippningen. Exempel om det undersökta tecknet flyter ihop med bakgrunden och man klipper bort den del av bakgrunden så kan det i teorin underlätta identifieringen av tecknet. Beroende på hur algoritmen fungerar så kan den kräva ”fritt” runtomkring tecknet för att identifiera tecknet, om bilden klipps precis i kanten på tecknet så är det möjligt att tecknet inte kan identifieras (Figur 6.1).

Figur 6.1: Den svarta rutan representerar originalbilden, den röda streckade rutan representerar bilden efter segmenteringen. Här visas vad som menas med att tecknet klipps precis i kanten av tecknet.

Klippningen kan ske så att delar av bakgrunden av misstag kan tolkas som tecken som illustreras i Figur 6.2. Det skulle generera extra tecken och förändra resultatet av algoritmen.

Figur 6.2: Den svarta rutan representerar originalbilden, den röda streckade rutan representerar bilden efter segmenteringen. Här visas hur ett bakgrundsmönster efter förbehandlingen kan tolkas som tecken, i detta fall tolkas de som bokstaven ”V”.

∇∇∇∇∇∇∇∇∇∇∇∇∇∇∇

Tomat, oliver, salt

(28)

22

6.2 Resultat

Det är stor skillnad i precisionen för de två OCR algoritmerna vilket var väntat. Författaren tror att detta beror på att ML Kit troligtvis har ett mycket djupare neuralt nätverk och därför högre precision än Tesseract. Eftersom ML Kit är en kommersiell produkt är ett rimligt antagande att mer resurser har lagts på utveckling av ML Kit än Tesseract som är open source.

Valet av mobiltelefon som användes för att fotografera livsmedelsförpackningarna och för att köra OCR algoritmerna kan ha påverkat resultatet. En mobiltelefon med en kamera med högre kontrast som standardinställning kan i teorin underlätta identifieringen av tecken som OCR algoritmerna gör. Mobiltelefonens processorhastighet kan också påverka resultatet när det kommer till hur snabbt OCR algoritmen körs.

6.3 Svårigheter

Reflektioner är ett stort problem för båda algoritmerna och är den största bakomliggande orsaken till att det blev fel i skanningen. Vid närmare analys av bilder med mycket reflektion där en eller båda algoritmerna haft problem att skanna, tror författaren att ML Kit mycket möjligt kan använda sig utav andra underliggande system som kan hjälpa förutspå möjliga ord. Det för att vissa ord är väldigt påverkade av reflektion och att ML Kit trots detta lyckas identifiera orden med hög precision. Ädelost är ett bra exempel där ordet ”Grönmögelost” samt ”persilja” i innehållsförteckningen har en linje med reflektion igenom båda orden (Figur 5.1). Trots detta lyckades ML Kit hitta tio av tolv tecken i ”Grönmögelost” samt sex av åtta tecken i ordet ”persilja”. Tesseract kunde inte identifiera ”Ingredienser”, ”Grönmögelost”, ”vatten” och ”persilja”. Alla fyra ord har reflektion på sig eller i närheten, vilket verkar försvåra skanningen. Ett annat bra exempel är baconost där det skiljde väldigt mycket mellan Tesseract och ML Kit resultaten. Detta kan ses i Figur 5.2 samt Figur 5.3.

Figur 5.1: En bild på innehållsförteckning från ädelostförpackning med mycket reflektion.

(29)

ML Kit Tesseract

Figur 5.3: Respektive bilder (bilden till vänster samt bilden till höger) är uppdelade i ytterligare två delar; delen till vänster är den manuellt skrivna textfilen (kontroll filen) och till höger är det OCR algoritmens resultatfil. Röd text innebär fel tecken, blå text innebär förväxling mellan gemener och versaler och svart text innebär korrekta tecken.

Både Tesseract och ML Kit var förvånansvärt bra på att segmentera bort bakgrund som författaren initialt trodde skulle vara ett stort problem. Ett exempel är Chokladkola med bakgrund som innehåller tecken (Figur 5.4)

Figur 5.4: Av 120 tecken hade ML Kit endast tre fel och Tesseract endast 15 fel.

Lågupplösta bilder är ett område där Tesseract verkar ha väldigt svårt men ML Kit klarar det mycket bra. Figur 5.5 demonstrerar ett exempel. Andra exempel är ”fullkornsris”, ”gemelli”, ”jasminris” och ”mandel skalade hackade” för att nämna några. Samtliga i kategori mjukplast.

Figur 5.5: En lågupplöst bild från en juleskumförpackning där ML Kit hittade alla ord medan Tesseract endast identifierade ”gelatin”, ”vegetabiliska” och ”oljor” som rätt ord.

(30)

24

Många av bilderna tagna på innehållsförteckning tryckt på mjukplast var suddiga och såg ut att ha låg upplösning. Detta kan bero på att mjukplast lätt reflekterar ljus vilket kan försvåra bildtagningen för kameran. Då Tesseract har större svårigheter med bilder vars bildkvalitet är dålig innebär det att Tesseract haft mycket svårare att extrahera texten ur just denna bakgrund i jämförelse med ML Kit.

Bilder tagna på innehållsförteckningar tryckta direkt på aluminiumförpackningar var svårigheten för Tesseract främst reflektioner och lågt upplösta bilder. Bildernas dåliga bildkvalitet tycks även här bero på svårigheter för kameran att fokusera rätt på grund av att aluminium lätt reflekterar ljus. ML Kit hade däremot inga större svårigheter vid lågupplösta bilder, men reflektioner var fortfarande ett större problem.

6.4 Begränsningar

Endast två OCR algoritmer har testats och det kan därför finnas en ännu bättre algoritm för ändamålet som inte har testats i studien.

En avgränsning är att en produkt inte får klassificeras med fler än en förpackningsyta, detta för att göra det möjligt att jämföra och analysera effekten bakgrundytorna har på OCR algoritmen. En blandning av de olika förpackningsytorna skulle troligen ge ett helt annat resultat, exempel på det är innehållsförteckningen på en Coca Cola burk som både är av aluminium och skrivet på en konvex yta.

6.5 Slutsatser och rekommendationer

För att identifiera text från bilder på innehållsförteckningar på svenska livsmedel så är ML Kit det bästa alternativet av de två undersökta OCR algoritmerna. ML Kits precision på 84% anser företaget att det är bra nog för ändamålet. Tesseract upplevs kräva en kamera som tar högupplösta bilder, troligtvis hade Tesseracts resultat påverkats mer än ML Kits resultat om en mobiltelefon med en annan kamera hade använts. OCR algoritmernas resultat kan påverkas både negativt och positivt vid byte av mobiltelefon. En kamera som tar lägre upplösta bilder än den i studien använda mobiltelefonen skulle troligtvis försämra Tesseracts resultat mer än ML Kits resultat, en mobiltelefon med högre upplösning kan å andra sidan förbättra OCR algoritmernas resultat.

6.6 Vidare forskning

Som vidare forskning rekommenderas att studera flera OCR algoritmer och på ett större dataset. Andra OCR algoritmer som inte är med i studien kan vara mer lämpade för ändamålet. Ett större dataset ger en större tillförlitlighet och ett mer generaliserbart resultat.

(31)

Testning av mobiltelefoner med olika kvalitet på kamerorna kan också vara intressant att undersöka för att bekräfta eller dementera kamerans påverkan på resultatet.

(32)

26

7

Referenser

Abdulkhudhur, H., Habeeb, I., Yusof, Y., & Shahrul, Y. A. (den 30 06 2016). Implementation of improved Levenshtein algorithm for spelling correction word candidate list generation.

Jatit, 88, 449-455. Hämtat från

https://www.researchgate.net/publication/305244207_Implementation_of_improve d_Levenshtein_algorithm_for_spelling_correction_word_candidate_list_generatio n

Adobe. (den 26 02 2021). Hämtat från https://acrobat.adobe.com/se/sv/acrobat/how-to/ocr-software-convert-pdf-to-text.html

Ahmad, R., Afzal, M. Z., Rashid, S. F., Liwicki, M., Dengel, A., & Breuel, T. (2015). Recognizable Units in Pashto Language for OCR. International Conference on Document Analysis

and Recognition (ss. 1246-1250). MOCR Workshop.

Creswell, J. W. (2008). Research Design: Qualitative, Quantitative, and Mixed Methods

Approaches (3 uppl.). SAGE Publications.

GitHub. (u.å). Tesseract OCR Documentation. Hämtat från Github: https://tesseract-ocr.github.io/ 2020

Google. (den 03 12 2019). ML Kit for Firebase. Hämtat från firebase.google.com: https://firebase.google.com/docs/ml-kit 2020

Hakro, D., & Talib, A. (2016). Printed Text Image Database for Sindhi OCR. ACM Transactions

on Asian and Low-Resource Language Information Processing (TALLIP), 1-18.

Jurafsky, D. (den 26 02 2021). Stanford University. Hämtat från https://web.stanford.edu/class/cs124/lec/med.pdf

Kumar, M., Jindal, M. K., Jindal, S. R., & Sharma, R. K. (2019). Character and numeral recognition for non-Indic and Indic scripts: a survey. Springer, 52(4), 2235–2261. doi:https://doi-org.proxy.library.ju.se/10.1007/s10462-017-9607-x

Kurshid, K., Faure, C., & Vincent, N. (2012). Word spotting in historical printed documents using shape and sequence comparisons. Elsevier, 45(7), 2598 - 2609. doi:https://doi.org/10.1016/j.patcog.2011.10.013

Lee, S., Cho, M. S., Jung, K., & Kim, J. H. (2010). Scene Text Extraction with Edge Constraint and Text Collinearity. Istanbul. doi:10.1109/ICPR.2010.969

Nielsen, M. (2015). Neural Networks and Deep Learning. San Francisco: Determination Press. Hämtat från http://neuralnetworksanddeeplearning.com/

Nielsen, M. (den 01 06 2020). Deep learning. Hämtat från http://neuralnetworksanddeeplearning.com/chap6.html

Omniglot. (den 02 06 2020). Kannada. Hämtat från

https://www.omniglot.com/writing/kannada.htm

Otsu, N. (1979). A Threshold Selection Method from Gray-Level Histograms. IEEE, 9(1), 62 - 66. doi:10.1109/TSMC.1979.4310076

Patel, R., & Davidson, B. (2011). Forskningsmetodikens grunder: att planera, genomföra och

rapportera en undersökning (4 uppl.). Studentlitteratur.

Sahare, P., & Dhok, S. B. (2016). Review of Text Extraction Algorithms for Scene-text and Document Images. IETE Technical Review, 34(2), 144-164. doi:https://doi.org/10.1080/02564602.2016.1160805

Swedbank. (den 26 02 2021). Så fungerar OCR-skannern. Hämtat från

https://www.swedbank.se/share/layer-content/foretag/digitala-tjanster/appen-for-foretag/sa-fungerar-ocr-skannern-.html

Wikipedia. (den 02 06 2020). Posterization. Hämtat från

https://en.wikipedia.org/wiki/Posterization

Ye, Q., Huang, Q., Gao, W., & Zhao, D. (2005). Fast and robust text detection in images and

video frames. Elsevier, 23(6), 565-576.

doi:https://doi.org/10.1016/j.imavis.2005.01.004

Zagoris, K., Ergina, K., & Papamarkos, N. (2010). A Document Image Retrieval System.

(33)

Bilagor

Bilaga 1

Här finns alla bilder som har analyserats i rapporten.

Aluminium

(34)
(35)
(36)

30

Mjukplast

(37)
(38)
(39)
(40)

34

Konvex yta

(41)
(42)
(43)
(44)

38

Bilaga 2

Länk till ett Git repo som innehåller

• Alla för- och efterbehandlade bilder • Alla uträkningar och python-script • Alla textfiler med resultat

(45)

• Alla ord som användes av Levenshtein algoritmen

• Alla straffpoäng för respektive tecken som Levenshtein algoritmen utgick ifrån

References

Related documents

Vissa äldre dokument med dåligt tryck kan vara svåra att OCR-tolka korrekt vilket medför att den OCR-tolkade texten kan innehålla fel och därför bör man visuellt jämföra

Vissa äldre dokument med dåligt tryck kan vara svåra att OCR-tolka korrekt vilket medför att den OCR-tolkade texten kan innehålla fel och därför bör man visuellt jämföra

Vissa äldre dokument med dåligt tryck kan vara svåra att OCR-tolka korrekt vilket medför att den OCR-tolkade texten kan innehålla fel och därför bör man visuellt jämföra

Vissa äldre dokument med dåligt tryck kan vara svåra att OCR-tolka korrekt vilket medför att den OCR-tolkade texten kan innehålla fel och därför bör man visuellt jämföra

Vissa äldre dokument med dåligt tryck kan vara svåra att OCR-tolka korrekt vilket medför att den OCR-tolkade texten kan innehålla fel och därför bör man visuellt jämföra

Vissa äldre dokument med dåligt tryck kan vara svåra att OCR-tolka korrekt vilket medför att den OCR-tolkade texten kan innehålla fel och därför bör man visuellt jämföra

Vissa äldre dokument med dåligt tryck kan vara svåra att OCR-tolka korrekt vilket medför att den OCR-tolkade texten kan innehålla fel och därför bör man visuellt jämföra

Vissa äldre dokument med dåligt tryck kan vara svåra att OCR-tolka korrekt vilket medför att den OCR-tolkade texten kan innehålla fel och därför bör man visuellt jämföra