# Optical character recognition

Optical character recognition (OCR), of in het Nederlands: optische tekenherkenning is een transformatie waarbij uit een afbeelding van een tekst door middel van patroonherkenning alle tekens uit de afbeelding als zodanig worden herkend en apart opgeslagen door een computer(programma). Oftewel, de tekst uit een afbeelding wordt omgezet in bewerkbare tekst. Een voorbeeld hiervan is automatische kentekenplaatherkenning.
Meestal wordt een scanner gebruikt om een afbeelding van het papier te maken en naar de computer te sturen. De afbeelding wordt meestal aangemaakt met een resolutie van 150-300 dpi en opgeslagen in het TIFF-formaat.
Wanneer alle tekens herkend zijn kan de OCR-software verschillende bewerkingen uitvoeren. De bekendste bewerking is het opslaan van de tekens in een verder bewerkbaar bestandsformaat, waarbij dikwijls zowel de taal van het origineel, als de fonts en de opmaak worden gereproduceerd. In dit geval wordt het een "full text OCR" genoemd.
Door OCR neemt een pagina met tekst nog maar een paar kilobyte aan geheugenopslag in. Bovendien is hij daarna weer bewerkbaar in een tekstverwerker. Belangrijk is ook dat de tekst nu doorzoekbaar kan worden gemaakt, bijvoorbeeld in een digitale bibliotheek of in een zoekmachine.

## Contextuele OCR - ICR

In dit geval worden de initiële OCR-resultaten gebruikt om verdere analyses uit te voeren om specifieke informatie te gaan zoeken in het gescande beeld. Bijvoorbeeld: indien het gescande beeld een factuur is, zal de analyse proberen uit alle OCR-resultaten de verschillende specifieke factuurgegevens te vinden (factuurnummer, datum, btw, totalen, leverancier etc.). Dit soort OCR wordt ook wel ICR genoemd (Intelligent Character Recognition). Dit verwijst naar de context waarin de gevonden gegevens geplaatst worden.
Door de context van geëxporteerde data te analyseren wordt met ieder verwerkt document de zekerheid van de door ICR herkende data verbeterd. Door kennis die de ICR-engine verkrijgt bij het ene document toe te passen op documenten in alle andere workflows wordt het resultaat als geheel steeds beter.
Op basis van de context van een document kunnen de data worden ingebracht in een specifieke workflow. Als de ICR detecteert dat een ingebracht poststuk een factuur betreft worden geëxporteerde (xml) data automatisch doorgezet naar het factuurverwerkingssysteem. Zo kan voor ieder type document een aparte workflow worden gekoppeld door de ICR. Denk hierbij aan transportpapieren, douanepapieren, boetes en inkooporders.

## Herkennen van gedrukte tekst

Er zijn verschillende fases die doorlopen worden om tekst te herkennen:
* Controle van de oriëntatie. Staat de tekst op z'n kant of op de kop, dan moet de afbeelding eerst geroteerd worden. Ook als de tekst scheef staat, is er soms een mogelijkheid om dit min of meer recht te zetten. Deze functie wordt meestal met het Engelse skew of de-skew aangeduid; rechte lijnen lopen dan weer recht in plaats van scheef naar boven of onder.
* Herkennen van de tekstelementen (kolommen, tekstblokken, tekstregels, woorden). Een normale brief of pagina in een boek bestaat over het algemeen uit één kolom of tekstblok. Een krant daarentegen heeft meerdere kolommen. Veel OCR-programma's kunnen dit automatisch herkennen. De volgorde van de tekstblokken en/of kolommen is meestal te wijzigen door met de bewerkingsknoppen een volgorde aan te geven.
* Tekst en plaatjes scheiden. De tekst wordt afgezonderd van de rest, waarbij de plaatjes veelal in het formaat .PNG of .JPG (vroeger .PCX) worden weggezet.
* Bij professionele OCR kan de herkenning ook nog op numeriek of alfanumeriek gezet worden, waardoor alleen cijfers of cijfers en letters worden herkend.
* Karakterherkenning. De letters worden stuk voor stuk geanalyseerd: welk teken, welk lettertype, grootte enz. en dan vergeleken met voorbeelden van letters waarover het programma beschikt. Soms kan een OCR-programma nieuwe voorbeelden toevoegen (de zogenaamde training-optie), zodat later dezelfde soort letter weer herkend wordt. Ook worden er wel regels toegepast die beschrijven hoe de taal per landsaard is opgebouwd.
* Controle van de woorden met een woordenboek (library, dictionary) van alle bestaande woorden, de zogenoemde spellingcontrole. Bij OCR is de beginletter meestal de discutabele letter (denk aan 'geef', 'beef', 'leef', 'zeef', 'teef', 'weef', 'heeft', enz.) Bij veel eenvoudige OCR-programma's wordt de woordenlijst (taalafhankelijk!) weggelaten, wat aanzienlijk in tijd en opslagcapaciteit kan schelen. Intelligente spellingcheckers hebben de neiging tijdens het gebruik te groeien, wat te beperken is door per categorie of onderwerp (medisch, technisch, historisch e.d.) aparte woordenlijsten aan te leggen.
* Exporteren. Tot slot kan het resultaat opgeslagen worden. Daarbij kan meestal het formaat gekozen worden en in welke mate de oorspronkelijke opmaak gereconstrueerd moet worden. Zo zal een tekstbestand een andere uitvoer opleveren dan een spreadsheet of PDF-file. Bij het exporteren wordt in veel gevallen ook de plaats van de tekstelementen op de oorspronkelijke pagina opgeslagen. Van ieder tekstblok, tekstregel en woord worden de coördinaten van het tekstelement op de afbeelding opgeslagen. Hiermee kan het tekstelement bijvoorbeeld gemarkeerd worden (highlighting).
De tekenherkenning van moderne gedrukte teksten is meestal van goede kwaliteit. Bij oudere teksten komt het geregeld voor dat tekens niet herkend worden. Dit wordt vooral veroorzaakt door de slechtere kwaliteit van het origineel, bijvoorbeeld als gevolg van beschadigingen op de pagina, het doorschemeren van de inkt van de achterkant van de pagina, spikkels of vlekken op het origineel, oudere lettertypen, oude spellingvarianten, andere lay-out van pagina's e.d.

## Handschriftherkenning

Wordt met OCR het herkennen van gedrukte tekst bedoeld, handschriftherkenning wordt door sommige leveranciers ook ICR genoemd. ICR staat voor Intelligent Character Recognition. Handschriftherkenning is vele malen ingewikkelder dan het herkennen van gedrukte tekst, vanwege de grote variatie in schrijfwijzen.
Toch wordt deze techniek veel en succesvol ingezet voor het herkennen van handgeschreven teksten op met name formulieren. Doordat de tekst daar op vaste plaatsen staat en ook vaak een specifieke betekenis heeft, bijvoorbeeld postcode, registratienummer, adres, getal, is er door de softwaresystemen toch een goede herkenbaarheid.
Sinds het einde van de jaren tachtig zijn de eerste commerciële toepassingen beschikbaar gekomen. In de loop der jaren zijn deze sterk verbeterd. Vanaf ongeveer 2000 zijn er ook bruikbare programma's die worden gebruikt in kleine computers (handheld computer of pda) waar een toetsenbord ontbreekt. Sinds kort zijn er pennen op de markt, waarmee je kunt schrijven op papier en daarna op de pc de geschreven tekst omzetten naar getypte tekst.
Toepassingen van handschriftherkenning zijn bijvoorbeeld de sorteercentrales van de posterijen, formulierherkenning (bijvoorbeeld belastingformulieren), enquêteverwerking, schadeformulieren bij verzekeringen, factuurherkenning etc.

## OMR

Naast OCR en ICR bestaat er ook nog OMR (Optical Mark Recognition), dit is een vergelijkbare technologie die echter gespecialiseerd is in de herkenning van aangevinkte vakjes en zwart gemaakte rondjes (voor toepassingen zoals de Cito-toets). Kenmerkend voor deze techniek is over het algemeen het gebruik van formulieren die gedrukt zijn in een bepaalde kleur die bij het scannen wegvalt. Alleen de markeringen blijven dan over waardoor ze nog gemakkelijker door de software herkend kunnen worden.

## Barcode

Veel programma's voor herkenning kunnen tevens barcodes (streepjescode) ontcijferen die zich op de gescande documenten bevinden.

## ITR

Naast OCR, OMR en ICR bestaat er ook nog ITR, Intelligent Textual Recognition. Dit is een programma dat op het internet op zoek gaat naar sites over een bepaald, vooraf ingegeven, onderwerp en hiervan dan een samenvatting maakt.

## Digitaliseren

Er is op internet een groeiende club enthousiaste mensen, die door middel van scannen en OCR de zogenoemde e-books of digitale boeken voor het project Gutenberg maakt. Daarbij gaat het vaak om werken waar geen auteursrecht meer voor geldt, dus oudere literatuur. Ook genealogie- ofwel stamboomenthousiastelingen maken graag van deze techniek gebruik om oude gemeentelijke archieven te digitaliseren. Daarnaast zijn veel erfgoedinstellingen bezig collecties te digitaliseren, zoals bibliotheken, archieven en musea. Ook in het programma Google Books worden op grote schaal boeken gedigitaliseerd, in samenwerking met bibliotheken en uitgevers.