Sådan bruges OCR til at genkende tekst fra ethvert billede ved hjælp af Python

For nylig ramte en spændende tanke mig. Med al den automatisering og den teknologiske udvikling, som vi får at læse hver dag der går, begyndte jeg at undre mig over, om det er muligt at elektronisk læse en tekst fra ethvert billede. Jeg henvendte mig til den alvidende Google for at se efter mine svar og voila! Takket være google, indså jeg, at denne tanke ramte mig flere årtier for sent. Til at begynde med kom jeg på tværs af udtryk som Computer Vision og Optical Character Recognition. Ikke desto mindre besluttede jeg at gå ind i denne nye verden af ​​Computer Vision og prøve mig selv. Mit mål med dette indlæg er at give dig en forståelse af Computer Vision, Optical Character Recognition (OCR). Det vil være meget interessant at se, hvordan vi kan udtrække tekst fra et billede ved hjælp af Python.

Hvad er computervision:

Computer Vision er et felt inden for datalogi, hvor vi ønsker at gøre det muligt for computere at identificere og behandle billeder og objekter, ligesom vi mennesker gør. Det inkluderer også at give nyttige resultater baseret på observationen. Lad mig uddybe nogle praktiske eksempler.

  • Et af de mest fremtrædende anvendelsesområder er medicinsk computervision. Vi uddrager information fra billeddata, som hjælper med at diagnosticere en patient. Et eksempel på dette er påvisning af tumorer, arteriosklerose eller andre ondartede ændringer.
  • En tekstscanner er en anden vidt brugt computervisionsbaseret applikation. Med dette kan vi scanne en hvilken som helst tekst fra et billede ved hjælp af optisk tegngenkendelse og vise teksten på en skærm og udføre den ønskede yderligere handling / opgave.

Hvad er optisk karaktergenkendelse (OCR):

OCR er et afsnit af Computer Vision. Selvom det er selvforklarende, er det en teknik til at genkende tekst inde i et digitalt billede af et fysisk dokument, for eksempel et scannet dokument, og det kan også konverteres til et redigerbart tekstbehandlingsdokument direkte.

Efter at have forklaret disse vilkår, fortsætter vi nu med at vælge to billeder, vi vil læse tekst fra. Til tider kræves det, at vi læser et billede fra en URL. Jeg har valgt et billede tilgængeligt som en URL. Et andet er almindeligt tekstbillede, som jeg hentede fra google. Jeg har delt begge nedenfor.

Lad os flytte til Python og koden for at hente tekst fra disse billeder. Den angivne kode er skrevet i Google Colab.

Først skal vi installere og / eller importere nødvendige biblioteker. Lad os kort se på de anvendte biblioteker.

Brugte biblioteker:

Pytesseract - Python-tesseract er et optisk karaktergenkendelsesværktøj (OCR) til python. Det kan genkende og læse tekst indlejret i billeder.

IO - io-modulet giver Pythons hovedfaciliteter til at håndtere forskellige typer I / O.

BytesIO - Binær I / O (også kaldet bufret I / O) forventer byteslignende objekter og producerer bytesobjekter. Der udføres ingen kodning, dekodning eller newline-oversættelse. Denne kategori af strømme bruges til alle former for ikke-tekstdata.

Forespørgsler - Anmodninger giver dig mulighed for at sende organiske, græsfodrede HTTP / 1.1-anmodninger uden behov for manuelt arbejde. Dette hjælper med at trække HTML-koden på ethvert websted.

PIL - Pillow Imaging Library er et gratis bibliotek til Python-programmeringssprog, der tilføjer support til åbning, manipulation og gemning af mange forskellige billedfilformater.

Følgende er koden-

1

2

3

4

5

6

7

8

9

10

11

12

13

! sudo apt install tesseract-ocr

! pip installerer pytesseract

import pytesseract

prøve:

fra PIL-importbillede

undtagen ImportError:

importer billede

Arbejder med det første billede:

Lad os vælge vores første billede med en URL. Vi er nødt til at kommunikere med URL'en, modtage dens kildekode vha. Kommandoen request.get. Da det er et billede, åbner og gemmer vi dette billede som en variabel. Til sidst læser vi teksten på billedet ved hjælp af kommandoen image_to_string af by tesseract og derefter udskriver indholdet. Kommandoerne findes nedenfor.

1

2

3

4

5

6

7

8

9

10

11

12

13

importanmodninger

fra io import BytesIO

url = "https://i.oodleimg.com/item/5528750302u_0x424x360f?1570301166"

respons = forespørgsler.get (url)

img1 = Image.open (BytesIO (respons.indhold))

extractedInformation = pytesseract.image_to_string (img1)

udskrives (extractedInformation)

Den genererede output ser sådan ud.

Arbejder med det andet billede:

Lad os nu vælge det andet billede. Det er en fil og ikke en URL. Derfor vil vores kommando ændres i overensstemmelse hermed, som du kan finde nedenfor.

1

2

3

4

5

img2 = (Image.open ('Text_paragraph.png'))

extractedInformation = pytesseract.image_to_string (img2)

udskrives (extractedInformation)

Den genererede output ser sådan ud.

Mangler ved OCR:

Den mest populære anvendelse af OCR er håndskriftgenkendelse. Med konvertering af en håndskrevet tekst til digital tekst øger ensartetheden og anvendelighed manifold. Når det er sagt, har OCR sin ulempe ved ikke at være 100% nøjagtig. Som du måske allerede har bemærket, at det ikke korrekt kunne genkende webstedet fra det første billede. Der er måder, hvorpå vi kan forbedre nøjagtigheden af ​​tekstgenkendelse ved hjælp af OCR, som ikke er omfattet af denne artikel.

Med dette vil vi gerne opfordre dig til at prøve dette interessante koncept af optisk karaktergenkendelse fra den magtfulde verden af ​​Computer Vision og sende dine kommentarer og kommentarer.