Оптично разпознаване на символи
Оптичното разпознаване на символи (на английски: optical character recognition, OCR) е технология за конвертиране на печатен текст в текстов файл.
Тя е широко използвана за дигитализация – въвеждане на данни от хартия или файл, включително от лични документи, фактури, банкови извлечения, компютърни разпечатки, визитки, поща.
Това е често срещан метод на запис на печатни текстове, за да може текстът да бъде редактиран с текстов редактор, да се търси в него, да се съхранява по-компактно, да се показва онлайн, както и да се използва в компютърни програми, като автоматизиран превод, конвертиране на текст към говор.
История
[редактиране | редактиране на кода]Развитието на оптичното разпознаване на символи може да бъде проследено до технологии, включващи телеграфа и устройства за четене на слепите.[1] През 1914 г. Emanuel Goldberg разработва машина, която чете знаци и ги превръща в стандартен телеграфен код. В същото време, Edmund Fournier d'Albe разработва устройство, наречено Optophone – ръчен скенер, който, като сканира една печатна страница, произвежда тонове, които отговарят на конкретни букви или символи.
В края на 1920 и в 1930 г. Emanuel Goldberg разработва устройство, което той нарича „Статистическа машина“ за търсене в архиви от микрофилми, използвайки система за оптично разпознаване на код. През 1931 г. е удостоен с USA Patent номер 1838389 за изобретението. Патентът е придобит от IBM.
Слепи и слабовиждащи потребители
[редактиране | редактиране на кода]През 1974 г., Ray Kurzweil основава Kurzweil Computer Products Inc. и продължава развитието на omni-font OCR, който би могъл да разпознава текст, отпечатан в практически всеки шрифт. Kurzweil решил, че най-доброто приложение на тази технология би било да се създаде машина за четене от слепите, която ще позволи на незрящи хора да чуват компютъра, който, като чете, конвертира текста към говор.[1] Това устройство изисква изобретението на две базови технологии – плосък скенер и синтезатор на текст-към-говор. На 13 януари 1976 г. успешно завършения продукт е представен по време на пресконференция начело с Kurzweil и ръководителите на Националната федерация на слепите. През 1978 г. Kurzweil Computer Products Inc. започва да продава търговска версия на компютърна програма за оптично разпознаване на символи (OCR). LexixNexis е един от първите клиенти, който си купува програмата, за да я използва за качване на юридически и новинарски документи в онлайн бази данни. Две години по-късно Kurzweil продава своята компания на Xerox, които са имали интерес от по-нататъшната комерсиализация на преобразуването на текст от печатни книги на компютър.
Изследователска група начело с проф. Рамакришнан от Индийския институт на науките е разработила програмата PrintToBraille, с отворен код GUI интерфейс, която може да се използва от всеки за конвертиране на сканирани изображения на печатни книги до брайлови книги.
През 2000 година OCR е на разположение като онлайн услуга (WebOCR) в компютърна облачна среда и в мобилните приложения за превод в реално време на чужди езици на смартфон.
Различни системи OCR (търговски и с отворен код) са на разположение за най-често срещаните писмени системи, включително латиница, кирилица, арабски, иврит, индийски, китайски, корейски и японски символи.
Приложения
[редактиране | редактиране на кода]OCR се прилага в множество програми. Основна причина за разработката на подобни приложения са слабостите на хартиения носител като средство за съхраняване на информация.
Колкото повече се увеличават документите на хартиен носител, толкова повече продуктивността спада. Става все по-трудно информацията да бъде намирана, а нейното използване става бавно и неефикасно. Хартията е скъпа и заема голямо пространство. Информацията на хартиен носител не може да бъде редактирана на момента, както би било възможно при работата с текстов файл на вашия компютър. Всички тези фактори довеждат до внедряването на оптичното разпознаване на символи, което позволява извличането на информация от остарелите, скъпи и трудно обработваеми хартиени носители и поставянето ѝ в удобни за работа текстови формати, които могат да бъдат лесно намирани, използвани и редактирани.
Примерни стъпки от процеса на разпознаване
[редактиране | редактиране на кода]- Програмата анализира структурата на документа
- Разделяне на страницата на блокове: текст, таблици, изображения и др.
- Редовете се разделят на отделни думи. Думите се разделят на отделни символи.
- След като текстът е разделен на единични символи, всеки един от тях се сравнява с набор от шаблони.
- След осъществяването на сравнението програмата излиза с няколко хипотези за това какъв е символът.
- Символите се съединяват обратно в думи и след това в редове.
- Програмата предоставя на клиента своя финален резултат
Процес от гледна точка на потребителя
[редактиране | редактиране на кода]- Потребителят сканира документа
- Зарежда сканирания файл в програмата за разпознаване
- Запаметява разпознатия файл в избран от него формат (DOC, XLS, RTF, HTML, TXT и т.н.)
Възможна употреба на приложенията
[редактиране | редактиране на кода]- Извличане на данни от банкови извлечения, фактури, чекове и др.
- Извличане на данни от визитни картички и поставянето им в списъци от контакти
- Създаване на текстови версии на принтирани документи (сканиране на книги и т.н.)
- Управление на компютър чрез ръкопис. Ръкописът (подаден на таблет чрез стилус или пръст) се конвертира на момента в дадена команда
- Анти-бот защита
- Технология, помагаща на незрящи и слабовиждащи потребители
Техники
[редактиране | редактиране на кода]Предварителна обработка
[редактиране | редактиране на кода]Много често OCR софтуерите предварително обработват изображения, за да подобрят възможностите за успешно разпознаване. Техниките за предварителна обработка включват:[2]
- Завъртане на образа – ако документът не е бил подравнен правилно по време на сканирането, е възможно да се наложи да бъде наклонен няколко градуса по часовниковата стрелка (или обратно), за да станат линиите на текста максимално хоризонтални или вертикални.
- Филтриране – премахване на шум и смущения от изображението, породени от разнообразието на качество на печат, хартия или инструмент за писане.
- Бинаризация – преобразуване на изображението от цветната или сивата гама до черно и бяло (наречено бинарно изображение, защото има само два цвята). В някои случаи това е необходимо за алгоритъма за разпознаване на символи, а в други – алгоритъмът работи по-добре върху оригиналното изображение и тогава тази стъпка може да бъде пропусната.
- Премахване на линии – изчистване на линии и полета, в които няма текст.
- Анализ на оформлението или зониране – разделяне на колони, параграфи, надписи и пр., като различни блокове. Това е особено важно при оформления с няколко колони и таблици.
- Откриване на редове и думи – създава основните форми на думите и символите, а ако е необходимо, разделя думи.
- Разпознаване на начина на изписване – в многоезични документи начинът на изписване може да се промени на ниво дума и следователно трябва първо да се идентифицира начинът на изписване на символите, за да се извика правилния OCR.
- Отделяне на символите или „сегментиране“ – ако няколко символа са се свързали, например поради наличие на шум в изображението, те трябва да се разделят, или ако единични символи са се разделили на парчета по подобна причина, те трябва да се свържат в съответния символ.
- Нормализиране на пропорциите и мащаба
Сегментацията на непропорционални (с фиксирана широчина или моно-разреден (monospace)) шрифтове се постига сравнително лесно, като изображението се подравнява в еднородна решетка в зависимост от това къде е най-малко вероятно вертикалните линии да се пресекат с черни полета. За пропорционалните шрифтове са нужни по-сложни техники, защото празното място между буквите понякога може да е по-голямо от това между самите думи и е възможно вертикалните линии да се пресичат с повече от един символ.
Разпознаване на символите
[редактиране | редактиране на кода]Има два основни OCR алгоритъма, които могат да създадат списък с класифицирани символи „кандидати“.
Матрично разпознаване сравнява изображението с глифове от шаблон пиксел по пиксел (pattern matching или pattern recognition). Този аглоритъм разчита на това, че подаденият глиф е правилно отделен от останалата част на изображението и че глифът за сравнение е в сходен шрифт и мащаб. Тази техника работи най-добре с машинописен текст и не работи много добре, когато попадне на нови шрифтове.
Друг алгоритъм е чрез деление на даден глиф на атрибути (като линии, контури, посока на линиите, пресечни точки) и те се сравняват с абстрактно векторно представяне на символ, който може да върне един и повече прототипа. По-съвършените OCR програми използват техники за разделяне на изображението на множество от зони и установяват къде в различните зони има текст и къде – друга информация, както и различни характеристики на текстовете в различните зони. Това е обичайна техника при интелигентното разпознаване на символи (Intelligent Character Recognition (ICR)) и при най-съвременните OCR програми. За сравнение на атрибутите на изображението с тези на глифовете от шаблона и избиране на най-близкото съвпадение, се използва „методът на най-близкия съсед“, като например методът на k-най-близките съседи (kNN).
Последваща обработка
[редактиране | редактиране на кода]Точността на OCR може да се увеличи, ако изходът е ограничен от речник – списък от думи, които могат да се съдържат в документа.[2] Например, това могат да са всички думи в даден език или да е списък със специфични технически термини за определено поле или област от изображението. Тази техника обаче може да създаде проблеми, когато документ съдържа думи, които не са включени в такъв списък – като например имена (на хора, места, забележителности и пр.). Познаването на граматиката на езика, на който е сканираното изображение, също може да помогне много при определяне дали дадена дума е глагол или съществително и така да подобри точността на разпознаване.
Изходът обикновено е текстов поток или файл от символи, като по-сложните OCR системи могат да запазят първоначалното оформление на страницата и да създадат PDF документ, който съдържа едновременно и първоначалното изображение и текстовото представяне.
Точност
[редактиране | редактиране на кода]Упълномощен от Министерство на енергетиката на САЩ, Институтът по информационни научни проучвания (Information Science Research Institute, ISRI) има мисията да подобри автоматизираните технологии за разбиране на машинни напечатани документи, и той провежда най-авторитетен годишен тест по OCR точност от 1992 до 1996.[3]
При разпознаване от латинска азбука, машинописният текст не е 100% точен, дори когато образът е ясен. Едно проучване, базирано на разпознаване на текстове от вестници от 19-и и ранния 20 век стигат до извода, че буква по буква OCR прочита думите с точност от 81% до 99%, пълната точност може да бъде достигната, ако човек прочете текста или Data Dictionary Authentication. Други зони, включващи разпознаването на ръкопис, и печатането на текст на други скриптове (специално на източноазиатските езици, с букви, които имат много извивки за единична буква) са все още обект на проучвания и развитие. MNIST (база данни) е най-често използвана за разпознаване на ръчно написани букви.
Точността на разчитане може да бъде измервана по няколко начина, и начинът, по който се измерва, може силно да повлияе на разчетения текст. Например, ако дума контекст (принципно лексикон на думи) не е използвана в правилен софтуер намиращ несъществуващи думи, броят на грешките е 1% (99% точност) може да завърши с 5% (95% точност) или по-зле базирано на това дали всяка дума е разпозната с непознати символи или букви.
Уеб базираните OCR системи за разпознаване на ръчно написан текст „в движение“ е станал добре познат и разпространен продукт през последните години. Точност от 80% до 90% на спретната, чиста ръчно написана буква може да бъде достигнато с Pen computing софтуер, но обсега на точността все още достига дузина грешки на преведена страница, правещ технологията доста безполезна и ограничена само до няколко приложения.
Разпознаването на курсивен текст е активна зона на проучвания, с нива на разпознаване на текста дори по-ниски от ръчно написаният текст. Високи нива на разпознаване на бързо написан скрипт няма да бъдат възможни без използването на контекстуална или граматична информация. Например разпознаването на цели думи от речника е по-лесно, отколкото разпознаването на отделни букви от скрипт. Прочитането на Количество редове на Проверка (която е винаги с изписани числа) е пример за използването на малак речник, който повишава нивата на разпознаване значително. Формата на индивидуално изписаните букви сами по себе си просто не съдържа достатъчно информация, за да бъде преводът точен (по-висок от 98%).
Разшифроване
[редактиране | редактиране на кода]Символи за поддръжка на OCR са добавени в Уникод стандарта през юни 1993, версия 1.1.
Някои от тези символи са добавени в шрифтовете MICR или OCR-A.
Optical Character Recognition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | А | B | C | D | E | F | |
U+244 | ⑀ | ⑁ | ⑂ | ⑃ | ⑄ | ⑅ | ⑆ | ⑇ | ⑈ | ⑉ | ⑊ | |||||
U+245x | ||||||||||||||||
Notes
1.^ As of Unicode version 7.0 2.^ Grey areas indicate non-assigned code points |
Източници
[редактиране | редактиране на кода]- ↑ а б Schantz, Herbert F. The history of OCR, optical character recognition. Manchester Center, Vt., Recognition Technologies Users Association, 1982. ISBN 9780943072012.
- ↑ а б Optical Character Recognition (OCR) – How it works // Nicomsoft.com. Посетен на 2013-06-16.
- ↑ Оценка на точността на OCR