CodeKitHub
Miért bukik el az OCR könyvoldalak fotóin (és miért elég pár fok dőlés az egészhez)

Miért bukik el az OCR könyvoldalak fotóin (és miért elég pár fok dőlés az egészhez)

Közzétéve 2026. júl. 24.

Ha valaha megpróbáltál egy könyvoldalról készült fotót online szöveggé alakítani, és összefüggéstelen kavalkádot kaptál vissza, valószínűleg rossz dologra fogtad rá a hibát. Kézenfekvő a régi, megsárgult papírra vagy a rossz megvilágításra gyanakodni — a tesztek szerint azonban egyik sem befolyásolja érdemben az eredményt. A valódi ok szinte mindig valami olyasmi, amit puszta szemmel nem is látsz a fotón: egy apró kameradőlés.

A teszt: ugyanaz az oldal, négy különböző körülmény

Hogy kiderítsük, mi töri meg valójában az OCR-t (optikai karakterfelismerést) valós könyvfotókon, ugyanazt a szövegblokkot futtattuk le a Tesseracten — a nyílt forráskódú OCR-motoron — négy különböző körülmény között: tiszta, sík szkennelés, megsárgult/kifakult oldal, körülbelül 12 fokkal elforgatott fotó, és egy elforgatott fotó fényvisszaverődéssel is megtoldva.

Körülmény Szóhelyesség
Tiszta, sík szkennelés 100%
Megsárgult, kifakult oldal (dőlés nélkül) 100%
~12°-kal elforgatva (elszíneződés nélkül) 67,7%
~8°-kal elforgatva + fényvisszaverődés 71,0%

A megsárgult oldal pontosan ugyanazt az eredményt hozta, mint a makulátlan — hibátlan. Abban a pillanatban, hogy megjelent a dőlés, a pontosság a harmadával zuhant, pontosan olyan kimenetet produkálva, amilyet mindenki látott már, aki próbálkozott már “tankönyv szkennelése szöveggé” eszközökkel: "barn," a “barna” helyett, "Fejeze,." a “Fejezet.” helyett, "rejte,," a “rejtett” helyett.

Miért okoz ekkora kárt egy apró dőlés

Az OCR-motorok úgy olvassák a szöveget, hogy a kép sorait pásztázva következetes, vízszintes tintasávokat keresnek — ezzel a mechanizmussal különböztetik meg egyik szövegsort a másiktól. Egy tökéletesen egyenes szkennelésen minden szövegsor egy rendezett vízszintes sávban helyezkedik el, és a motor tisztán elválasztja az 1., 2. és 3. sort egymástól.

Ha az oldalt akár csak 10 fokkal elforgatod, az a tiszta vízszintes sáv több tucat pixelsoron átívelő átlós elmosódássá válik. A motor sorfelosztási logikája elkezdi összeolvasztani a karaktereket abból, aminek két külön sornak kellene lennie, vagy éppen szétdarabol egyetlen karaktert két különböző sornak vélt részre. Az eredmény nem “kicsit kevésbé pontos” — kategorikusan más kimenet, mert az az alapegység, amit a motor olvas (egy sor), már nem felel meg annak, ami valójában a képen van.

Ez az oka annak is, hogy egy számodra tökéletesen olvashatónak tűnő fotó is olvashatatlan OCR-eredményt adhat. A vizuális rendszered tudatos erőfeszítés nélkül kompenzálja a 10 fokos dőlést — észre sem veszed, hogy ferde. Egy naiv OCR-folyamatba nincs beépítve ilyen kompenzáció, az pontosan azokat a pixeleket olvassa, amiket kap.

A megoldás: egyenesítsd ki, mielőtt felismernéd — ne utána

A gyakorlati tanulság nem az, hogy “tartsd óvatosabban a telefonod” — egy nyitott könyv fotózásakor szinte elkerülhetetlen egy kis dőlés, hiszen nem tudod az oldalt egy szkenner üvegére lapítani. A megoldás automatikus: a dőlésszöget érzékelni és korrigálni kell a szövegfelismerés előtt, nem utána.

Egy megbízható módszer a szög érzékelésére nehézkes gépi tanulási modell nélkül a projekciós profil módszer: forgasd el a képet több lehetséges szögben, és mindegyiknél mérd meg, mennyire “csúcsos” a soronkénti tintaeloszlás. A helyes szögnél a szövegsorok éles sávokba rendeződnek (nagy szórás a sorok között); bármely más szögnél a tinta szétken a sorok között (kis szórás). Az a szög, amelyik a legnagyobb szórást adja, a kiegyenesítési szög.

Ha ezt a korrekciót futtatjuk le először, és utána ismerjük fel a szöveget, minden egyes elforgatott tesztesetünk visszaállt 100%-os szóhelyességre — ugyanaz az oldal, ugyanaz az OCR-motor, az egyetlen különbség az, hogy előbb kiegyenesítettük.

Mit jelent ez, ha könyvet digitalizálsz

  • Ne aggódj a papír állapota miatt. A sárgulás, az enyhe fakulás és az öregedő papír kontrasztvesztesége önmagában alig befolyásolja a pontosságot. Egy régi zsebkönyv nagyjából ugyanolyan jól digitalizálható, mint egy új.
  • A szöget aggódd. Egy olyan dőlés is, amit szemmel nem vennél észre, dönthet a használható szöveg és a zagyvaság között.
  • A vaku fényvisszaverődése kevésbé számít, mint a dőlés, de attól még árt. Egy fényes csillanás a fényes papíron kitörölheti az alatta lévő szöveget — a szögkorrekció nem javít egy olyan foltot, ahol eleve nincs olvasható tinta.
  • Egy olyan eszköz, ami automatikusan korrigálja a dőlést, megoldja a tényleges problémát. A mi könyvoldal szöveggé alakító eszközünk pontosan ezt az érzékelési és korrekciós lépést futtatja le a böngésződben, mielőtt felismerné a szöveget — nincs feltöltés, nincs szerver, és kifejezetten a dőlés problémájára épült, nem abból indul ki, hogy tökéletesen sík szkennelést kap.

Ha korábban már próbálkoztál OCR-rel egy könyvfotón, és feladtad, mert olvashatatlan lett az eredmény, valószínűleg nem az oldal volt a probléma — hanem szinte biztosan pár fok kameraszög.

← Vissza a bloghoz