Hur svårt är det att göra ett program som kan känna igen bokstäver från bilder? En aning har jag, men inte mycket mer... Hmm... tror jag kom på en idé som bör fungera... eftersom fonten o storleken alltid är lika så kan jag läsa ut pixel för pixel i en fyrkant runt bokstaven. 0 för vit och 1 för svart. Då bör jag få ut en unik kod för varje bokstav. Jag har sett ett PHP-program som klarade av det. Varje bokstav jämfördes med mallar för olika tecken genom att ta "avståndet" mellan tecknet och mallen. Tecknet ansågs stämma med den mall till vilket avståndet var minst. Avståndet definierades som totala skillnaden mellan tecknet och mallen (summan av den pixelvisa skillnaden). Hittade två länkar: <b>Per: Fast borde det inte vara mer logiskt att ta något i stil med L2-norm, snarare än en ren summa?</b> Eftersom du vet vilken font och fontstorlek det är så kan du ju använda dig av detta. Lagra bilder av tecknen tillsammans med ascii-motsvarigheten så kan du sedan gå igenom bilden du ska parsa och söka efter samma bilder som du lagrat undan. Eftersom du postade tråden för tre timmar sedan så måste jag säga att du jobbat riktigt snabbt om du redan har en fungerande lösning! är det text som skrivits av en dator eller är det något som skannats in? Som sagt så vet jag redan från början hur bokstäverna ska se ut, färg, font och storlek. Så jag läser bara av en fyrkant där bokstaven är och jämför alla pixlarna.Bokstavsigenkänning
Det är väl i princip så lätt som det kan vara, enbart stora bokstäver och dom är svarta på vit bakgrund.
Nån som har nån aning?
ThomasSv: Bokstavsigenkänning
Du får nog hålla på en hel del om du skall kunna lösa det bra. Har ingen länk, men en sökning på "character recognition" eller "text recognition" ger nog en del.
I princip måste du göra de här stegen:
1. Skilj varje bokstav från varje annan.
2. "Extrahera informationen från en bokstav." Det vill säga att du på något sätt definierar om de svartvita pixlarna till en form. Man skulle kunna klara sig utan det här steget om man vet exakt vilket typsnitt det är frågan om.
3. Jämför motsvarande information från varje bokstav i alfabetet med den du har för din bokstav, och ta fram någon slags norm av det.
Välj sedan den bokstav som skiljer sig minst från din.
Du kan även ge dig på något neuralt nätverk, men dels tror jag att det besvärligaste (steg 1 och 2) måste göras ändå, dels är inte VB jättelämpat för det, och dels så kräver det en hel del träning av nätverket först.Sv:Bokstavsigenkänning
ThomasSv: Bokstavsigenkänning
Sv:Bokstavsigenkänning
http://www.igi.tugraz.at/lehre/CI/tutorials/nn-ocr/nn-ocr.pdf
http://www.dontveter.com/basisofai/char.html
Thomas: Fast är du säker på att det alltid kommer in som exakt 0/1?
Då är det ju lätt!
Per: Fast borde det inte vara mer logiskt att ta något i stil med L2-norm, snarare än en ren summa?Sv: Bokstavsigenkänning
Japp. Det var just vad programmet gjorde.Sv:Bokstavsigenkänning
Sv:Bokstavsigenkänning
Sv:Bokstavsigenkänning
att känna igen tecken i sig är inte värst svårt när man väl isolerat själva tecknet.
absolut lättast är att ha mallar i gråskala där svart är en pixel som bör vara tänd , vit är en som bör vara släkt och alla gråskalor är mellanting .. tex grå 128,128,128 är skitsamma om den är tänd eller släkt.
om du först skalar ditt tecken till samma storlek som mallen , så kan du lätt gå pixel för pixel genom både mallen och ditt tecken , och poängsätta matchningen baserat på pixelfärgen mot mallen.
så gör du samma sak för alla tecken och den matchning som fick bäst poäng är den du väljer...
det svåra är ju att isolera och hitta tecken...
vet du i förväg hur stora tecken det är du letar efter blir det ju betydligt mycket lättare.Sv: Bokstavsigenkänning
Thomas