Data & MoreEngineeringgithub.com/dataandmore/ocr

Ett dokument, fem
genomgångar, nollgissningar.

En stegvis OCR-pipeline som omvandlar en rå PDF till ren text och dokumentövergripande signaler. Varje genomgång är avsiktlig: ett fritextlager där det finns, en snabb Tesseract-baslinje, en kombinerad visionarbetare för signaturer, ansikten och ID-identifiering, en specialiserad MRZ-läsare och EasyOCR som det djupinlärningsbaserade sista steget.

Eftersom ni inte kan förvränga text som ni läser med rätt verktyg första gången.

5sekventiella genomgångar
3detektorer i en arbetare
2OCR-motorer, snabb sedan djup
1sidbildfil, laddas en gång
Avsnitt 01Översikt

Pipelinen i korthet

Sidor rör sig från vänster till höger. MRZ-genomgången aktiveras endast när ID-eller-inte-detektorn indikerar att en sida är ett identitetsdokument; allt annat fortsätter till den avancerade OCR-genomgången. Varje steg genererar annoteringar som nästa steg kan använda som ledtrådar.

INDATA SNABB TEXT PARALLELL VISION SPECIALIST DJUP OCR PDF-läsare pdfium / PyMuPDF sidor → bilder + text deskew · 300 DPI Tesseract LSTM · snabb baslinje OCR ordrutor · konfidensgrad layout · läsordning kostnadseffektiv · deterministisk Kombinerad arbetare tre detektorer, en bildladdning Signatur signerad? var? YuNet ansiktsruta porträtt? ID eller inte klassificerare dirigering? om ID alltid · avancerad OCR MRZ pass / ID-remsa P<UTODOE<<JANE<< L898902C36UTO7408 ICAO 9303-tolk kontrollsiffror verifierade EasyOCR CRAFT + CRNN stiliserad · brusig 80+ språk sista steget
Huvuddataflöde Villkorlig gren, endast ID Visionsignal Dokumentannotering
Avsnitt 02Grundläggande resonemang

Varför dela upp arbetet i lager överhuvudtaget

Ett verkligt dokumentarkiv är heterogent: digitalt skapade PDF:er, inskannade brev med en kaffefläck, flerspråkiga avtal och pass med en maskinläsbar zon hamnar alla i samma inkorg. Pipelinen dirigerar varje sida genom kostnadseffektiva, deterministiska genomgångar först och reserverar kostsam djupinlärningsbaserad OCR för de fall som motiverar det. Visionsignaler följer med texten, så att en konsument kan frågaär detta avtal signerat ellerär denna uppladdning faktiskt ett pass utan att behöva läsa om filen.

Genomgång 01PDF-läsare

Den främstaingångspunkten

Två PDF:er som ser identiska ut för en person kan skilja sig markant internt: den ena ett digitalt skapat dokument med ett perfekt textlager, den andra ett mobilfoto som sparats som PDF i 72 DPI och roterats fyra grader. Läsaren normaliserar denna asymmetri så att efterföljande OCR aldrig behöver hantera den.

Vad det gör

  • Rastrerar varje sida till ett standardformat på 300 DPI så att motorerna ser konsekventa teckenstorlekar.
  • Extraherar det inbäddade textlagret när det finns, och kortsluter OCR helt för digitalt skapade filer.
  • Rätar ut, korrigerar och fixar orientering, och beskär sedan skannerbäddens kanter.
  • Delar upp flersidiga dokument till en sidvis ström som resten av pipelinen hanterar självständigt.

Unik fördel

  • Fritext vinner. En digitalt skapad PDF hoppar över OCR – omedelbart, perfekt och felfritt.
  • Konsekvent indata. Varje efterföljande modell kan utgå från en upprätt bild med rimlig DPI.
  • En enda källa till sanning. Den bild som renderas här återanvänds av varje efterföljande worker – ingen dubbel rastrering.
lutad råskanning utratad 300 DPI
Pass 02Tesseract

Den snabba baslinjen

Faktura Nr. 2026-0427 Totalt: 12 480,00 Förfaller 30 maj 2026 Moms 19283746 ordrutor + konfidens

Tesseract är arbetshästen: snabb, CPU-vänlig, stöder 100+ språk och ger strukturerad utdata – ordrutor, radrutor och konfidens per ord. För den långa svansen av rena kontorsdokument löser den problemet helt och hållet.

Vad den gör

  • Kör LSTM-igenkännaren över varje sida och genererar hOCR / TSV med ord, rader och rutor.
  • Kopplar ett konfidensvärde per ord som avgör var EasyOCR behöver göra ett andra pass.
  • Returnerar läsordning och layout, så att stycken rekonstrueras korrekt.

Unik fördel

  • Hastighet och kostnad. Ren CPU, inget GPU-beroende, skalar horisontellt och förblir kostnadseffektivt.
  • Deterministisk. Samma indata, samma utdata: enkelt att testa, cacha och diff:a i CI.
  • Layoutmedveten. Ordrutor och läsordning är förstklassiga utdatavärden.
  • Konfidens är en routningssignal. Regioner med låg konfidens blir EasyOCR:s indata.
Tesseract är avsiktligt det första OCR-passet – tillräckligt bra för de flesta sidor. De kostsamma passen körs endast där det inte räcker till.
Pass 03Kombinerad worker

Underskrifter, ansikten och ett beslut

Den kombinerade workern är visionsspåret. Istället för att köra tre jobb som var och ett laddar om sidbilden, allokerar en tensor och värmer upp en modell, kör den tre detektorer över samma minnesinterna bild i ett enda pass – och producerar signaler på dokumentnivå som text ensam inte kan ge svar på.

sidbild · laddas en gång Underskriftsdetektor CNN över sidan · rutor + poäng YuNet ansiktsdetektor liten, snabb, körs på CPU ID-eller-inte-klassificerare binärt huvud · är detta ett ID? signerad = sant ruta=(14,130,96,38) · p=0,93 ansikten = 1 porträtt · poäng 0,98 ärID = sant dirigeras till MRZ-passet en bild, ett batch tre detektorer delar avkodning + förbearbetning ~3× snabbare än tre separata workers
Detektor A

Underskrift

De flesta kontrakt är bara giltiga när de är kontrasignerade. Ett litet CNN söker efter bläckliknande streck som kännetecknar en handskriven underskrift och returnerar rutor samt ett poängvärde.

  • Omvandlar är detta kontrakt verkställt till ett booleskt värde.
  • Rutan tillsammans med sidindex gör att ett gränssnitt kan hoppa direkt till den signerade raden.
  • Den närmaste textraden – det tryckta namnet – kan kopplas till rutan.
Detektor B

YuNet

YuNet är en liten ansiktsdetektor byggd för att köra i realtid på vanlig hårdvara. Här handlar det inte om ansikten, utan om porträtt som ett dokumentattribut.

  • Ett ansikte i hörnet är ett tydligt tecken på ett ID-kort, pass eller körkort.
  • Ungefär 1 ms per beskärning på CPU, tillräckligt billigt för att köra på varje sida.
  • Förekomsten av ett ansikte kan styra redigering eller särskild hantering.
Detektor C

ID eller inte

En binär klassificerare som läser hela sidan och besvarar en fråga: är detta ett identitetsdokument? Dess uppgift är att avgöra vilka sidor som når MRZ-specialisten.

  • Undviker att köra MRZ på varje sida – de flesta saknar det.
  • Använder YuNets ansiktsträff och Tesseract-text som attribut.
  • Ett litet huvud över ett litet grundnätverk: snabbt och enkelt att kalibrera.
Varför kombinerat? Att ladda bilden, konvertera färg, ändra storlek och värma upp en modell utgör merparten av varje detektors latens. Att köra alla tre över en gemensam bild, en process och en tät loop minskar detta overhead och håller annoteringarna självkonsekventa, eftersom alla tre såg samma pixlar.
Pass 04MRZ

Passspecialisten

Den maskinläsbara zonen längst ned på ett pass eller ID-kort följer ett strikt ICAO-9303-format: en fast teckenuppsättning (A–Z 0–9 <), fasta positioner och inbyggda kontrollsiffror. Ett generiskt OCR kan läsa det men förväxlarO/0 eller1/I. Detta pass är specialbyggt för raden.

Vad det gör

  • Körs endast när ID-eller-inte-klassificeraren flaggar sidan, och slösar därmed aldrig arbete.
  • Använder en MRZ-anpassad igenkänning och grammatik som enbart genererar giltiga MRZ-tecken.
  • Tolkar fälten: typ, utfärdande land, efternamn, förnamn, dokumentnummer, nationalitet, födelsedatum, kön och utgångsdatum.
  • Verifierarkontrollsiffror– ett förfalskat eller felläst fält upptäcks aritmetiskt, inte genom gissning.

Unik fördel

  • Strukturerad, inte fritext. KYC-koden tar emot en typad post, inte en textsträng.
  • Självvaliderande. Kontrollsiffror ger en garanti som generellt OCR inte kan matcha.
  • Snävt domän, hög noggrannhet. Liten teckenuppsättning, fast layout – en specialist vinner med bred marginal.
UTOPIA PASSPORT SURNAME: DOE GIVEN: JANE DOB: 1985-04-12 P<UTODOE<<JANE<<<<<<<<<<<< L898902C36UTO7408122F12<<06 parser → typed record · check ✓
Pass 05EasyOCR

Den djupinlärningsbaseradesista milen

Tesseract · confidence 0.41 |nv01ce N0. 2O26-O427 stiliserat teckensnitt, låg kontrast EasyOCR · confidence 0.96 Invoice No. 2026-0427 CRAFT detector + CRNN

EasyOCR är ett djupinlärningsbaserat OCR – en CRAFT-textdetektor kombinerat med en CRNN-igenkänning på PyTorch. Tyngre än Tesseract, men det utmärker sig precis där Tesseract kämpar: teckensnitt med låg kontrast eller stiliserad form, böjd eller roterad text, foton av kvitton samt många icke-latinska skriftsystem. Här fungerar det som reservalternativ och pass för rik-OCR.

Vad det gör

  • Läser om de regioner där Tesseract returnerade lågt konfidenstal – kirurgiskt, inte hela sidan.
  • Hanterar icke-latinska skriftsystem som en given Tesseract-installation inte är konfigurerad för.
  • Ger ett andra utlåtande: överensstämmelse mellan de två motorerna höjer konfidensen avsevärt.

Unik fördel

  • Robusthet. CNN-igenkänning hanterar foton, perspektiv och ovanliga teckensnitt.
  • Täckning. 80+ språk direkt ur lådan.
  • Målinriktad. Körs endast där Tesseract inte var tillförlitligt, vilket håller den långsamma vägen liten.
Billigt i första hand, dyrt endast där det behövs – det är vad som håller pipelinen snabb i genomsnitt utan att förlora de svåra fallen i svansen.
Avsnitt 03Routing

Beslutet en sida fattar

Rendera sida PDF-läsare Tesseract-pass ord + konfidenstal Kombinerad worker signature · YuNet · ID-or-not Regioner med lågt konfidenstal? avgör om EasyOCR behövs MRZ-pass endast om isID = true EasyOCR-pass kirurgisk, sedan global Slutlig post text + signaler + MRZ
Avsnitt 04Översikt

Vad varje pass tillför

Pass Utdata Kostnad När det används bäst
PDF reader normaliserade bilder, textlager mycket låg digitalt skapade PDF:er
Tesseract ordrutor + konfidens låg · CPU rena kontorsdokument
Signature signeringsflagga + rutor låg kontrakt, regelefterlevnad
YuNet ansiktsrutor, antal mycket låg identifiering av porträtt / ID-handlingar
ID-or-not isID, dokumenttyp låg dirigering till MRZ
MRZ strukturerad post + kontrollsiffror medel pass, nationella ID-handlingar
EasyOCR text + konfidens hög · GPU-vänlig stiliserad, brusig, flerspråkig
Avsnitt 05Principer

Vad pipeline:n utgår ifrån

Billigt först, kostsamt endast när det är motiverat

Varje pass finns till för att det föregående inte kan hantera ett specifikt felscenario. Tesseract bär huvuddelen av arbetet; EasyOCR anropas endast för de ord som Tesseract inte kunde läsa; MRZ endast när sidan verkligen är en ID-handling.

Signaler, inte enbart text

OCR är nödvändigt men sällan tillräckligt. Den kombinerade worker:n genererar signaler på dokumentnivå – signerad, porträtt förekommer, identitetshandling – som den efterföljande affärslogiken faktiskt behöver.

Specialister överträffar generalister inom avgränsade domäner

En MRZ i ett pass är ett litet, strikt format med kontrollsiffror. En specialiserad parser är mer träffsäker och självvaliderande på ett sätt som ingen generisk OCR kan matcha för samma textremsa.

Dela på arbetet

Den kombinerade worker:n finns till för att inläsning och förbehandling av bilden är den tidskrävande delen. Tre detektorer över en och samma minnesinläst bild reducerar denna overhead och säkerställer att annoteringarna förblir konsekventa.