Data & MoreEngineeringgithub.com/dataandmore/ocr

Ét dokument, fem
gennemløb, nulgætværk.

En trinvis OCR-pipeline, der omdanner en rå PDF til ren tekst og signaler på dokumentniveau. Hvert gennemløb er bevidst: et fritekstlag, hvor det findes, en hurtig Tesseract-baseline, en kombineret vision-worker til signaturer, ansigter og ID-detektion, en specialist-MRZ-læser og EasyOCR som deep learning-slutled.

Fordi man ikke kan fordærve tekst, man læser med det rette værktøj første gang.

5sekventielle gennemløb
3detektorer i én worker
2OCR-motorer, hurtig derefter dyb
1sidebillede, indlæst én gang
Afsnit 01Oversigt

Pipelinen i overblik

Sider bevæger sig fra venstre mod højre. MRZ-gennemløbet aktiveres kun, når ID-eller-ej-detektoren fastslår, at en side er et identitetsdokument; alt andet fortsætter til det avancerede OCR-gennemløb. Hvert trin udsender annotationer, som det næste trin kan anvende som hints.

INPUT HURTIG TEKST PARALLEL VISION SPECIALIST DYB OCR PDF-læser pdfium / PyMuPDF sider → billeder + tekst deskew · 300 DPI Tesseract LSTM · hurtig baseline OCR ordfelter · konfidensgrad layout · læserækkefølge billig · deterministisk Kombineret worker tre detektorer, én billedindlæsning Signatur underskrevet? hvor? YuNet ansigtsramme portræt? ID eller ej klassifikator rute? hvis ID altid · avanceret OCR MRZ pas / ID-strimmel P<UTODOE<<JANE<< L898902C36UTO7408 ICAO 9303-parser kontrolcifre verificeret EasyOCR CRAFT + CRNN stiliseret · støjfyldt 80+ sprog slutled
Primær datasti Betinget forgrening, kun ID Vision-signal Dokumentannotation
Afsnit 02Rationale

Hvorfor lagdele arbejdet overhovedet

Et reelt dokumentkorpus er heterogent: born-digital PDF'er, scannede breve med en kaffeplet, flersprogede kontrakter og pas med en maskinlæsbar zone lander alle i den samme indbakke. Pipelinen sender hver side gennem billige, deterministiske gennemløb først og reserverer dyr deep learning-OCR til de tilfælde, der berettiger det. Vision-signaler følger med teksten, så en konsument kan spørgeer denne kontrakt underskrevet ellerer dette upload faktisk et pas uden at genindlæse filen.

Gennemløb 01PDF-læser

Hoveddøren

To PDF'er, der ser identiske ud for et menneske, kan være vidt forskellige indvendigt: den ene en born-digital eksport med et perfekt tekstlag, den anden et telefonbillede fladtrykt til PDF ved 72 DPI og roteret fire grader. Læseren normaliserer denne asymmetri, så efterfølgende OCR aldrig behøver at håndtere den.

Hvad det gør

  • Rasteriserer hver side til en standard på 300 DPI, så motorerne ser ensartede tegnstørrelser.
  • Udtrækker det indlejrede tekstlag når til stede, hvilket fuldstændigt omgår OCR for digitalt fødte filer.
  • Retter skævhed, dewarper og korrigerer orientering, og beskærer derefter scannerbordets kanter.
  • Opdeler flersidede dokumenter til en per-side strøm, som resten af pipeline'en håndterer uafhængigt.

Unik fordel

  • Fritekst vinder. En digitalt født PDF springer OCR over – øjeblikkelig, perfekt og fejlfri.
  • Konsistent input. Alle efterfølgende modeller kan antage et opret billede med fornuftig DPI.
  • Én sandhedskilde. Det billede, der renderes her, genbruges af alle efterfølgende arbejdere – ingen dobbelt rasterisering.
skævt råscan rettet skævhed 300 DPI
Pas 02Tesseract

Den hurtige baseline

Faktura Nr. 2026-0427 Total: 12.480,00 Forfalder 30. maj 2026 Moms 19283746 ordfelter + konfidensværdi

Tesseract er arbejdshesten: hurtig, CPU-venlig, 100+ sprog og struktureret output – ordfelter, linjefelter og per-ords konfidensværdi. For den lange hale af rene kontordokumenter løser den opgaven direkte.

Hvad den gør

  • Kører LSTM-genkendelsen over hver side og udsender hOCR / TSV med ord, linjer og felter.
  • Tilknytter en per-ords konfidensværdi score, der afgør, hvor EasyOCR skal foretage et andet pas.
  • Returnerer læserækkefølge og layout, så afsnit rekonstrueres korrekt.

Unik fordel

  • Hastighed og omkostninger. Ren CPU, ingen GPU-afhængighed, skalerer horisontalt og forbliver omkostningseffektiv.
  • Deterministisk. Samme input, samme output: nemt at teste, cache og sammenligne i CI.
  • Layout-bevidst. Ordfelter og læserækkefølge er førsteklasses output.
  • Konfidensværdi er et routingsignal. Områder med lav konfidensværdi bliver input til EasyOCR.
Tesseract er bevidst det første OCR-pas – godt nok til de fleste sider. De omkostningstunge pas kører kun, hvor det kommer til kort.
Pas 03Kombineret arbejder

Underskrifter, ansigter og én beslutning

Den kombinerede arbejder er vision-banen. I stedet for at køre tre jobs, der hver genindlæser sidebilledet, allokerer en tensor og varmer en model op, kører den tre detektorer over det samme in-memory-billede i ét pas og producerer signaler på dokumentniveau, som tekst alene ikke kan besvare.

sidebillede · indlæst én gang Underskriftsdetektor CNN over siden · felter + score YuNet ansigtsdetektor lille, hurtig, kører på CPU ID-eller-ikke-klassificerer binært hoved · er dette et ID? underskrevet = true felt=(14,130,96,38) · p=0,93 ansigter = 1 portræt · score 0,98 erID = true routes til MRZ-passet ét billede, én batch tre detektorer deler dekodning + forbehandling ~3× hurtigere end tre separate arbejdere
Detektor A

Underskrift

De fleste kontrakter har først betydning, når de er modunderskrevet. Et lille CNN scanner efter blækagtige streger, der fremstår som en håndskrevet underskrift, og returnerer felter samt en score.

  • Konverterer er denne kontrakt udført til en boolean.
  • Felt plus sideindeks giver en brugergrænseflade mulighed for at hoppe til den underskrevne linje.
  • Den nærmeste tekstlinje – det trykte navn – kan parres med feltet.
Detektor B

YuNet

YuNet er en lille ansigtsdetektor, der er bygget til at køre i realtid på standardhardware. Her handler det ikke om ansigter, men om portrætter som et dokumentkendetegn.

  • Et ansigt i hjørnet er et stærkt tegn på et ID-kort, pas eller kørekort.
  • Ca. 1 ms pr. beskæring på CPU – billigt nok til at køre på hver side.
  • Tilstedeværelsen af et ansigt kan udløse redigering eller særlig behandling.
Detektor C

ID eller ej

En binær klassificering, der læser hele siden og besvarer ét spørgsmål: er dette et identitetsdokument? Dens opgave er at afgøre, hvilke sider der videresendes til MRZ-specialisten.

  • Undgår at køre MRZ på hver side – de fleste har ingen.
  • Anvender YuNets ansigtsfund og Tesseracts tekst som funktioner.
  • Et lille hoved over en lille grundmodel: hurtig og nem at kalibrere.
Hvorfor kombineret? Indlæsning af billedet, farvekonvertering, tilpasning af størrelse og opvarmning af en model udgør størstedelen af enhver detektors latenstid. Ved at køre alle tre over ét fælles billede, én proces og én tæt løkke elimineres denne overhead, og annotationerne forbliver indbyrdes konsistente, fordi alle tre så de samme pixels.
Pas 04MRZ

Pas-specialisten

Den maskinlæsbare zone nederst på et pas eller ID-kort følger et strengt ICAO-9303-format: et fast tegnsæt (A–Z 0–9 <), faste positioner og indbyggede kontrolcifre. En generisk OCR kan læse den, men vil forvanskeO/0 eller1/I. Dette pas er specialbygget til strimlen.

Hvad det gør

  • Kører kun, når ID-eller-ej-klassificeringen markerer siden, så der aldrig spildes arbejde.
  • Anvender en MRZ-tilpasset genkender og grammatik, der kun udsender gyldige MRZ-tegn.
  • Fortolker felterne: type, udstedende land, efternavn, fornavne, dokumentnummer, nationalitet, fødselsdato, køn og udløbsdato.
  • Verificererkontrolcifre– et forfalsket eller fejllæst felt opdages ved aritmetik, ikke ved gætning.

Unik fordel

  • Struktureret, ikke fritekst. KYC-kode modtager en typet post, ikke en streng.
  • Selvvaliderende. Kontrolcifre giver en garanti, som generisk OCR ikke kan matche.
  • Snævert domæne, høj præcision. Lille tegnsæt, fast layout – en specialist vinder med stor margin.
UTOPIA PASSPORT SURNAME: DOE GIVEN: JANE DOB: 1985-04-12 P<UTODOE<<JANE<<<<<<<<<<<< L898902C36UTO7408122F12<<06 parser → typet post · kontrol ✓
Pas 05EasyOCR

Den dybe lærings-sidste mil

Tesseract · konfidensværdi 0.41 |nv01ce N0. 2O26-O427 stiliseret skrifttype, lav kontrast EasyOCR · konfidensværdi 0.96 Invoice No. 2026-0427 CRAFT-detektor + CRNN

EasyOCR er en OCR baseret på dyb læring – en CRAFT-tekstdetektor plus en CRNN-genkender på PyTorch. Tungere end Tesseract, men den udmærker sig præcis der, hvor Tesseract kæmper: lav kontrast eller stiliserede skrifttyper, buet eller roteret tekst, fotos af kvitteringer og mange ikke-latinske skriftsystemer. Her fungerer den som reserve og som avanceret OCR-pas.

Hvad det gør

  • Genlæser de områder, hvor Tesseract returnerede lav konfidensværdi – præcist og ikke hele siden.
  • Håndterer ikke-latinske skriftsystemer, som en given Tesseract-installation ikke er konfigureret til.
  • Leverer en anden vurdering: enighed mellem de to motorer øger konfidensværdien markant.

Unik fordel

  • Robusthed. CNN-genkendelse håndterer fotos, perspektiv og usædvanlige skrifttyper.
  • Dækning. 80+ sprog direkte ud af boksen.
  • Målrettet. Kører kun der, hvor Tesseract ikke var sikker, så den langsomme sti forbliver begrænset.
Billig i første omgang, dyr kun hvor det er nødvendigt – det er det, der holder pipelinen hurtig i gennemsnit uden at miste den lange hale.
Sektion 03Routing

Den beslutning en side træffer

Gengivelse af side PDF-læser Tesseract-pas ord + konfidensværdi Kombineret arbejder signatur · YuNet · ID-eller-ej Områder med lav konfidensværdi? afgør om EasyOCR er nødvendig MRZ-pas kun hvis isID = true EasyOCR-pas præcist, derefter globalt Endelig post tekst + signaler + MRZ
Afsnit 04Overblik

Hvad hvert trin tilføjer

Trin Output Omkostning Hvor det er stærkt
PDF-læser normaliserede billeder, tekstlag meget lav digitalt fødte PDF'er
Tesseract ordbokse + konfidens lav · CPU rene kontordokumenter
Signatur signeret-flag + bokse lav kontrakter, compliance
YuNet ansigtsbokse, antal meget lav identifikation af portrætter / ID-dokumenter
ID-or-not isID, dokumenttype lav routing til MRZ
MRZ maskinlæst post + kontrolcifre medium pas, nationale ID-kort
EasyOCR tekst + konfidens høj · GPU-venlig stiliseret, støjfyldt, flersproget
Afsnit 05Principper

Hvad pipelinen bygger på

Det billige først, det dyre kun når det er nødvendigt

Hvert trin eksisterer, fordi det foregående ikke kan håndtere en bestemt fejltype. Tesseract bærer den største del af arbejdet; EasyOCR aktiveres kun for de ord, det ikke kunne læse; MRZ kun når siden faktisk er et ID-dokument.

Signaler, ikke blot tekst

OCR er nødvendigt, men sjældent tilstrækkeligt. Den kombinerede worker udsender signaler på dokumentniveau – signeret, portræt til stede, identitetsdokument – som den efterfølgende forretningslogik rent faktisk har brug for.

Specialister slår generalister inden for snævre domæner

En MRZ i et pas er et lille, strengt format med kontrolcifre. En specialiseret parser er mere præcis og selvvaliderende, på en måde som ingen generisk OCR kan matche på den samme strimmel.

Del arbejdet

Den kombinerede worker eksisterer, fordi indlæsning og forbehandling af billedet er den langsomme del. Tre detektorer over ét in-memory-billede reducerer denne overhead og sikrer, at annotationerne er konsistente.