SlideShare a Scribd company logo
1 of 30
Decembar, 2015
 Projekat započet 2008, prekinut 2009 i opet oživeo
2010
 Originalno radilo 7, trenutno 4 inžinjera
 Windows 10 Windows.Media.Ocr namespace
 Windows 8 NuGet
Install-Package Microsoft.Windows.Ocr
 Project Oxford servis
Computer Vision APIs -> OCR
OCR projekat
• Bing Image Search
• Windows 10
• Office Lens
• Translator
• OneNote
• OneDrive
 Mali broj pretpostavki:
 Tekst je štampan, slične boje
 Tekst se nalazi u linijama
 Bitne performance (demo)
Pregled
OCR Engine
Tekst
Layout info
Slika
Pregled
Detekcija
Reči
Prepoznavač
Reči
Pregled
Preprocessing
Binarization
Oreintation
& Angle
Line
Formation
Line
Filtering
Baseline &
xHeight
Region
Detection
Missed
Connected
Components
Word
Breaker
Image
Recognition
Chopper
Post-
procesiranje
Lattice
ICR
Beam
Search
Text
 RGB u Grayscale
 Grayscale u WoB I BoW
Binarizacija
 Cilj: grupisati piksele slične boje
 Ideja: binarizovati sliku, i onda odrediti koji
pikseli su povezani
 Raditi binarizaciju na malim delovima slike
 Računati parameter za binarizaciju na većim
delovima
 Srednja vrednost
 Devijacija
 Sauvola binarization
Povezane komponente
Globalna Binarizacija
 Lako i efikasno za implementaciju
 Ne radi dobro u određenim slučajevima
Lokalna Binarizacija
 Bolje rezultate od globalne binarizacije
 Kako implementirati da bude efikasno?
Implementacija
Implementacija
Implementacija
 Problemi
 Puno dupliranog računanja
 Memorija nije prostorno lokalna
 Rešenje: predprocesiranje!
 Izračunati parametre za binarizaciju na manjim
delovima -i dalje nije prostorno lokalno, neke
operacije se ponavljaju
 Još bolje: računati kumulativnu sumu za srednju
vresnost i devijaciju
Analiza
Kumulativna Suma
Orijentacija i ugao
Preprocessing
Binarization
Oreintation
& Angle
Line
Formation
Line
Filtering
Baseline &
xHeight
Region
Detection
Missed
Connected
Components
Word
Breaker
Image
Recognition
Chopper
Post-
procesiranje
Lattice
ICR
Beam
Search
Text
 Horizontalna projekcija za
sve uglove
 Projektovati centre povezanih
komponenti
 „Nazubljeni obrazac“ linija
Ugao
Formiranje linija
Filtriranje linija
Osnovna linija, x-height
Preprocessing
Binarization
Oreintation
& Angle
Line
Formation
Line
Filtering
Baseline &
xHeight
Region
Detection
Missed
Connected
Components
Word
Breaker
Image
Recognition
Chopper
Post-
procesiranje
Lattice
ICR
Beam
Search
Text
 Definicija: osnovna linija je linija na kojoj
većina slova „leže“, ali ispod koje se spuštaju
descenti.
 Ne postoji stroga matematička definicija
 Aproksimacija: linija koja stoji ispod teksta i
ima najveći kontrast
Osnovna linija
 Tekst često nije ravan, što znači da i osnovna
linije nije prava
 Pristup: aproksimirati liniju koja se sastoji iz K
pravih linija koje prolaze kroz K + 1
kontrolnih tačaka
Problem
 Kontrolne tačke treba odrediti
 Imaju fiksiranu X kordinatu, dok Y kordinatu
treba odrediti
 Za svaku kombinaciju tačaka može se
izračunati kontrast, i bira se najbolja
kombinacija
Implementacija
 Problemi - broj kombinacija je previše veliki
da bi se svaka kombinacija proverila
𝐵𝑟𝑘𝑜𝑚𝑏𝑖𝑛𝑎𝑐𝑖𝑗𝑎 = 𝑉𝑖𝑠𝑖𝑛𝑎 𝐵𝑟 𝑇𝑎č𝑎𝑘𝑎 −1
Primer: visina linije - 20px, kontrolnih tačaka – 6,
kombinacija - 3,200,000
 Rešenje: Koristiti dinamičko programiranje!
𝐵𝑟𝑘𝑜𝑚𝑏𝑖𝑛𝑎𝑐𝑖𝑗𝑎 = 𝑉𝑖𝑠𝑖𝑛𝑎2
× 𝐵𝑟 𝑇𝑎č𝑎𝑘𝑎 − 1
Primes: 20px, 6 tačaka, kombinacija 2000
prethodno 3,200,000
Implementacija
 Slično matematičkoj indukciji
 Ideja: Ako nadjemo najbolje rešenje za N, da
li možemo da nađemo najbolje rešenje za
N+1?
Dinamičko programiranje
 Prvi korak: za svaku pixel u drugom sloju,
izračunati minimalnu cenu putanje koja se u
njemu završava i zapamtiti je
 N-ti korak: za svaki pixel u N+1 sloju,
izračunati minimalnu cenu putanje koja se u
njemu završava i zapamtiti pixel iz kojeg
dolazimo
 Kad sve završimo: izabrati pixel sa
najmanjom cenom i putanju kojom smo došli
Dinamičko programiranje
 Verovatnoća i statistika – podaci sa šumom
 Nadgledano učenje
 Regresija – predviđa sa neprekidnim izlazom
 Cene automobila
 Klasifikacija – izlaz je diskretan
 Email spam filter
 Nenadgledano učenje
 Uglavnom klasterizanje
Mašinsko učenje
 Množenje matrice vektorom i aktivaciona
funkcija zbog nelinearnosti
𝑦 = 𝐶 · 𝜎 𝐴 · 𝑥 + 𝑏 + 𝑑
𝑒 𝑦 𝑖/𝑠, 𝑠 = 𝑒 𝑦1 + 𝑒 𝑦2 + ⋯ + 𝑒 𝑦 𝑛
 Na izlazu soft-max da
bi imali verovatnoće klasa
 Optimizacija
 CPU SSE instrukcije
 int16_t – 4 bita ceo broj
i 12 bita decimalni deo
Neuronske mreže
Hiper-ravni nisu dovoljne
 Cilj: predvideti da li je linija ili nije
 Postoji jako raznovrsan skup linija
 Teško opisati šta čini liniju a šta ne čini liniju
 Binarni klasifikator
 22 svojstva
 Debljina linije
 Broj razmaka
 Kompleksnost oblika
 ...
Klasifikator linija
 Features - osobine
 Konvolucia sa Gabor filterima
 Širina / visina
 197 ulaza
 ~200 neurona u skrivenom sloju
 ~100 izlaza za različite karaktere
 Gabor filter
 Proizvod sinusoide i Gausove distribucije
 O vs o vs 0 ili P vs p,
Prepoznavanje oblika karaktera

More Related Content

More from Startit

Front-end development iz ugla .NET programera
Front-end development iz ugla .NET programera�Front-end development iz ugla .NET programera�
Front-end development iz ugla .NET programeraStartit
 
Sibin Grasić - Najčešće greške WP developera
Sibin Grasić - Najčešće greške WP developeraSibin Grasić - Najčešće greške WP developera
Sibin Grasić - Najčešće greške WP developeraStartit
 
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11Startit
 
MTS & iPhone - Mobile Monday Serbia #11
MTS & iPhone - Mobile Monday Serbia #11MTS & iPhone - Mobile Monday Serbia #11
MTS & iPhone - Mobile Monday Serbia #11Startit
 
Igrice za bakice - Ivan Francuski, Eipix - GameUp
Igrice za bakice - Ivan Francuski, Eipix - GameUpIgrice za bakice - Ivan Francuski, Eipix - GameUp
Igrice za bakice - Ivan Francuski, Eipix - GameUpStartit
 
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...Startit
 
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac ConferenceFliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac ConferenceStartit
 
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršacPrepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršacStartit
 
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17Startit
 
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...Startit
 
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17Startit
 
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech MeetupLogstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech MeetupStartit
 
Docker for Fun and Profit at Startit Tech Meetup
Docker for Fun and Profit at Startit Tech MeetupDocker for Fun and Profit at Startit Tech Meetup
Docker for Fun and Profit at Startit Tech MeetupStartit
 
Development box at Startit Tech Meetup
Development box at Startit Tech MeetupDevelopment box at Startit Tech Meetup
Development box at Startit Tech MeetupStartit
 
Startit Meetup #12 - Brainstorm
Startit Meetup #12 - BrainstormStartit Meetup #12 - Brainstorm
Startit Meetup #12 - BrainstormStartit
 
Startit Meetup #12 - Spark.me
Startit Meetup #12 - Spark.meStartit Meetup #12 - Spark.me
Startit Meetup #12 - Spark.meStartit
 
Startit Meetup #12 - FIT
Startit Meetup #12 - FITStartit Meetup #12 - FIT
Startit Meetup #12 - FITStartit
 
Startit Meetup #11 - Traveli.co
Startit Meetup #11 - Traveli.coStartit Meetup #11 - Traveli.co
Startit Meetup #11 - Traveli.coStartit
 
Starit meetup #11 - NetDokumenti
Starit meetup #11 - NetDokumentiStarit meetup #11 - NetDokumenti
Starit meetup #11 - NetDokumentiStartit
 
What makes a company not investable?
What makes a company not investable?What makes a company not investable?
What makes a company not investable?Startit
 

More from Startit (20)

Front-end development iz ugla .NET programera
Front-end development iz ugla .NET programera�Front-end development iz ugla .NET programera�
Front-end development iz ugla .NET programera
 
Sibin Grasić - Najčešće greške WP developera
Sibin Grasić - Najčešće greške WP developeraSibin Grasić - Najčešće greške WP developera
Sibin Grasić - Najčešće greške WP developera
 
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
 
MTS & iPhone - Mobile Monday Serbia #11
MTS & iPhone - Mobile Monday Serbia #11MTS & iPhone - Mobile Monday Serbia #11
MTS & iPhone - Mobile Monday Serbia #11
 
Igrice za bakice - Ivan Francuski, Eipix - GameUp
Igrice za bakice - Ivan Francuski, Eipix - GameUpIgrice za bakice - Ivan Francuski, Eipix - GameUp
Igrice za bakice - Ivan Francuski, Eipix - GameUp
 
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
 
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac ConferenceFliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
 
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršacPrepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
 
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
 
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
 
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
 
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech MeetupLogstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
 
Docker for Fun and Profit at Startit Tech Meetup
Docker for Fun and Profit at Startit Tech MeetupDocker for Fun and Profit at Startit Tech Meetup
Docker for Fun and Profit at Startit Tech Meetup
 
Development box at Startit Tech Meetup
Development box at Startit Tech MeetupDevelopment box at Startit Tech Meetup
Development box at Startit Tech Meetup
 
Startit Meetup #12 - Brainstorm
Startit Meetup #12 - BrainstormStartit Meetup #12 - Brainstorm
Startit Meetup #12 - Brainstorm
 
Startit Meetup #12 - Spark.me
Startit Meetup #12 - Spark.meStartit Meetup #12 - Spark.me
Startit Meetup #12 - Spark.me
 
Startit Meetup #12 - FIT
Startit Meetup #12 - FITStartit Meetup #12 - FIT
Startit Meetup #12 - FIT
 
Startit Meetup #11 - Traveli.co
Startit Meetup #11 - Traveli.coStartit Meetup #11 - Traveli.co
Startit Meetup #11 - Traveli.co
 
Starit meetup #11 - NetDokumenti
Starit meetup #11 - NetDokumentiStarit meetup #11 - NetDokumenti
Starit meetup #11 - NetDokumenti
 
What makes a company not investable?
What makes a company not investable?What makes a company not investable?
What makes a company not investable?
 

Optičko prepoznavanje teksta

  • 2.  Projekat započet 2008, prekinut 2009 i opet oživeo 2010  Originalno radilo 7, trenutno 4 inžinjera  Windows 10 Windows.Media.Ocr namespace  Windows 8 NuGet Install-Package Microsoft.Windows.Ocr  Project Oxford servis Computer Vision APIs -> OCR OCR projekat • Bing Image Search • Windows 10 • Office Lens • Translator • OneNote • OneDrive
  • 3.  Mali broj pretpostavki:  Tekst je štampan, slične boje  Tekst se nalazi u linijama  Bitne performance (demo) Pregled OCR Engine Tekst Layout info Slika
  • 6.  RGB u Grayscale  Grayscale u WoB I BoW Binarizacija
  • 7.  Cilj: grupisati piksele slične boje  Ideja: binarizovati sliku, i onda odrediti koji pikseli su povezani  Raditi binarizaciju na malim delovima slike  Računati parameter za binarizaciju na većim delovima  Srednja vrednost  Devijacija  Sauvola binarization Povezane komponente
  • 8. Globalna Binarizacija  Lako i efikasno za implementaciju  Ne radi dobro u određenim slučajevima
  • 9. Lokalna Binarizacija  Bolje rezultate od globalne binarizacije  Kako implementirati da bude efikasno?
  • 13.  Problemi  Puno dupliranog računanja  Memorija nije prostorno lokalna  Rešenje: predprocesiranje!  Izračunati parametre za binarizaciju na manjim delovima -i dalje nije prostorno lokalno, neke operacije se ponavljaju  Još bolje: računati kumulativnu sumu za srednju vresnost i devijaciju Analiza
  • 15. Orijentacija i ugao Preprocessing Binarization Oreintation & Angle Line Formation Line Filtering Baseline & xHeight Region Detection Missed Connected Components Word Breaker Image Recognition Chopper Post- procesiranje Lattice ICR Beam Search Text
  • 16.  Horizontalna projekcija za sve uglove  Projektovati centre povezanih komponenti  „Nazubljeni obrazac“ linija Ugao
  • 19. Osnovna linija, x-height Preprocessing Binarization Oreintation & Angle Line Formation Line Filtering Baseline & xHeight Region Detection Missed Connected Components Word Breaker Image Recognition Chopper Post- procesiranje Lattice ICR Beam Search Text
  • 20.  Definicija: osnovna linija je linija na kojoj većina slova „leže“, ali ispod koje se spuštaju descenti.  Ne postoji stroga matematička definicija  Aproksimacija: linija koja stoji ispod teksta i ima najveći kontrast Osnovna linija
  • 21.  Tekst često nije ravan, što znači da i osnovna linije nije prava  Pristup: aproksimirati liniju koja se sastoji iz K pravih linija koje prolaze kroz K + 1 kontrolnih tačaka Problem
  • 22.  Kontrolne tačke treba odrediti  Imaju fiksiranu X kordinatu, dok Y kordinatu treba odrediti  Za svaku kombinaciju tačaka može se izračunati kontrast, i bira se najbolja kombinacija Implementacija
  • 23.  Problemi - broj kombinacija je previše veliki da bi se svaka kombinacija proverila 𝐵𝑟𝑘𝑜𝑚𝑏𝑖𝑛𝑎𝑐𝑖𝑗𝑎 = 𝑉𝑖𝑠𝑖𝑛𝑎 𝐵𝑟 𝑇𝑎č𝑎𝑘𝑎 −1 Primer: visina linije - 20px, kontrolnih tačaka – 6, kombinacija - 3,200,000  Rešenje: Koristiti dinamičko programiranje! 𝐵𝑟𝑘𝑜𝑚𝑏𝑖𝑛𝑎𝑐𝑖𝑗𝑎 = 𝑉𝑖𝑠𝑖𝑛𝑎2 × 𝐵𝑟 𝑇𝑎č𝑎𝑘𝑎 − 1 Primes: 20px, 6 tačaka, kombinacija 2000 prethodno 3,200,000 Implementacija
  • 24.  Slično matematičkoj indukciji  Ideja: Ako nadjemo najbolje rešenje za N, da li možemo da nađemo najbolje rešenje za N+1? Dinamičko programiranje
  • 25.  Prvi korak: za svaku pixel u drugom sloju, izračunati minimalnu cenu putanje koja se u njemu završava i zapamtiti je  N-ti korak: za svaki pixel u N+1 sloju, izračunati minimalnu cenu putanje koja se u njemu završava i zapamtiti pixel iz kojeg dolazimo  Kad sve završimo: izabrati pixel sa najmanjom cenom i putanju kojom smo došli Dinamičko programiranje
  • 26.  Verovatnoća i statistika – podaci sa šumom  Nadgledano učenje  Regresija – predviđa sa neprekidnim izlazom  Cene automobila  Klasifikacija – izlaz je diskretan  Email spam filter  Nenadgledano učenje  Uglavnom klasterizanje Mašinsko učenje
  • 27.  Množenje matrice vektorom i aktivaciona funkcija zbog nelinearnosti 𝑦 = 𝐶 · 𝜎 𝐴 · 𝑥 + 𝑏 + 𝑑 𝑒 𝑦 𝑖/𝑠, 𝑠 = 𝑒 𝑦1 + 𝑒 𝑦2 + ⋯ + 𝑒 𝑦 𝑛  Na izlazu soft-max da bi imali verovatnoće klasa  Optimizacija  CPU SSE instrukcije  int16_t – 4 bita ceo broj i 12 bita decimalni deo Neuronske mreže
  • 29.  Cilj: predvideti da li je linija ili nije  Postoji jako raznovrsan skup linija  Teško opisati šta čini liniju a šta ne čini liniju  Binarni klasifikator  22 svojstva  Debljina linije  Broj razmaka  Kompleksnost oblika  ... Klasifikator linija
  • 30.  Features - osobine  Konvolucia sa Gabor filterima  Širina / visina  197 ulaza  ~200 neurona u skrivenom sloju  ~100 izlaza za različite karaktere  Gabor filter  Proizvod sinusoide i Gausove distribucije  O vs o vs 0 ili P vs p, Prepoznavanje oblika karaktera

Editor's Notes

  1. Well-posed Learning Problem: A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.