Skip to content

procesaur/digiteks

Repository files navigation

ДигиТекс је вишеплатформна апликација за дигитализацију докумената на српском језику, заснована на оптичком препознавању карактера и језичким моделима за српски језик.

Документ који је предмет дигитализације се најпре трансформише у слику помоћу Поплера, док је за препознавање текста на слици задужен Гугл Тесеракт. Коначно, текст се обрађује језичким моделом за српски језик, што омогућава прецизније одређивање вероватноће сваке речи у контексту, као и аутоматско исправљање лоше рашчитаног текста.

Дигитекс се може покретати као Фласк веб апликација на рачунарима са различитим оперативним системима, за шта је неопходно инсталирати Пајтон 3.12, или се може скинути и покренути компајлована верзија која у себи садржи неопходан софтвер (за Виндоус оперативне системе).

Функционланости у верзији 1.1

Рад са документима

  1. Учитавање докумената припремљених у виду јединствене ПДф датотеке или ЗИП датотеке са сликама страна;
  2. Датотека се у сваком случају претвара у низ слика, које се аутоматски побољшавају (препознавање и уклањање артефакта, увеличавање, исправљање неповољне ротације);
  3. Преузимање парова оригиналних и побољшаних слика путем интерфејса.
  4. Групно (булк) процесирање - bulk.py

Аутоматско рашчитавање текста

  1. Одабир модела за оптичко препознавање карактера: српска ћирилица, српска латиница, ћирилица + латиница (подразумевано);
  2. Оптичко препознавање на клик, паралелно на процесору, са аутоматским препознавањем броја језгара/нити за оптималну брзину.

Препроцесирање рашчитаног документа

  1. Рашчитани документ (у ХОЦР) формату се препроцесира, при чему се за сваки параграф одређује припадност по ступцима, маргине и поравнање, а те информације се уграђују у документ;
  2. За речи у документу се такође утврђују позиције и одређују маргине, како би се пронашли кандидати за спајање прелома;
  3. Препознате преломљене речи се аутоматки спајају;
  4. Упаривање препознатог текста са сликама.

Обрада помоћу језичког модела

  1. Речи из документа се класификују према поузданости рашчитавања, а непоуздани кандидати се додатно проверавају у контексту, како би се израчунале нове поузданости тачности;
  2. Непоуздане речи се процесирају у максималном контексту како би се произвели могући кандидати за исправак. Кандидати се упоређују са оригиналном ниском, како би се одабрао адекватан исправак, уколико постоји;
  3. Излаз језичког модела се комбинује са оригиналним документом, при чему се он обогаћује информацијама о новим вероватноћама и евентуалним исправкама.

Интерфејс за даљу обраду

  1. Документ се током обраде учитава у интерфејс страну по страну;
  2. Пре приказивања, интерфејс обогаћује документ додатним кућицама (по једна за сваки параграф и сваку линију), које омогућавају групну обраду са неколико функција: померање горе доле, брисање и обележавање као добро препознато;
  3. Исправљене речи обележене су плавом бојом, несигурне жутом, а параграфи који се не уклапају ни у један ступац црвеном бојом, при чему је кроз интерфејс могуће подесити граничну вероватноћу за обележавање као и сатурацију маркера;
  4. Свака проверена (кликнута) реч се обележава као исправна;
  5. Речи се могу директно исправљати, при чему су исправке обележене зеленом бојом;
  6. Верзије измена (undo и redo)
  7. Проналажења дела текста на оригиналној слици
  8. Замена текста сликом
  9. Уметање преломних тачака у документу
  10. У сваком тренутку се документ може сачувати, и у сваком тренутку се може учитати претходно сачувани документ;
  11. Документ се поред чувања у овом, ДигиТекс формату, може сачувати и као текст или ХТМЛ.

Подешавања - config.json

  • модел који ће се корисити и његова архитектура [model и modern]
  • форсирање рада модела на процесору [cuda]
  • максимални контекст и паралелна обрада модела [context_size и batch_size]
  • минимална поузданост за ОЦР и за комбиновану поузданост (ОЦР + језички модел)[min_conf_combined и min_conf_ocr]
  • индекс минималне сумње у позуданост језичког модела[reasonable_doubt_index]
  • праг перплексности за израчунавање веорватноћа [max_perplexity]
  • префикс и суфикс који се лепи на текст који се обрађује [prefix и suffix]
  • тежина сличности речи по дужини [len_sim_weight]
  • тежина сличности речи по садржају [sim_weight]
  • тежина сличности речи по типографским сличностима слова [mapped_sim_weight]
  • максимална дужина за израчунавање сличности по дужини [max_len_similarity]
  • количник повећања вероватноће при исправљању уобичајених грешака (usual_suspects.json) [usual_suspects_boost]
  • индекс утицаја језичког модела на вероватноћу појединих речи [lm_influence]
  • индекс поузданости преко које језички модел исправља речи [lm_fix_over]
  • листа валидних бројева ступаца [valid_columns]
  • подешавања ХТМЛ излаза [html_config]
    • CSS-а за ХТМЛ приказ [css]
    • регуларни израз за поделу документа на делове [insert_break_regex]
    • порука у конзоли након преламања [break_message]
    • регуларни изрази и DOM упити за доделу посебних класа [special_classes]

Покретање апликације

Виндоус апликација

Скините прекомпајловану апликацију доступну на Гитхаб репозиторијуму софтвера и покрените програм на вашем рачунару.

Виндоус (командна линија, ваше Пајтон окружење)

  1. Преузмите апликацију у целости и сачувајте је на вашем рачунару.

  2. Инсталирајте Пајтон интерпретер (препоручена верзија 3.12)

  3. У командној линији подесите радно окружење на директоријум у којем је похрањен преузети софтвер

cd ./direktorijum/digiteks/softvera
  1. Инсталиратје неопходне Пајтон пакете
pip install -r requirements.txt
  1. Преузмите инсталацију пакета tesserocr за вашу верзију Пајтон интерпретера на овој адреси

  2. Инсталирајте преузети пакет (tesserocr)

pip install <путања/преузетог/пакета/име>.whl
  1. Покрените апликацију
python main.py

Linux (командна линија, ваше Пајтон окружење)

  1. Преузмите апликацију у целости и сачувајте је на вашем рачунару.

  2. Инсталирајте Пајтон интерпретер (препоручена верзија 3.12)

  3. У командној линији подесите радно окружење на директоријум у којем је похрањен преузети софтвер

cd ./direktorijum/digiteks/softvera
  1. Инсталиратје неопходне Пајтон пакете
pip install -r requirements.txt
  1. Инсталирајте Tesseract
sudo apt-get install tesseract-ocr libtesseract-dev libleptonica-dev pkg-config
  1. Инсталирајте Poppler
sudo apt-get install -y poppler-utils
  1. Инсталирајте пакет (tesserocr)
pip install tesserocr
  1. Покрените апликацију
python main.py

apache веб апликација (Linux пример)

  1. Преузмите апликацију у целости и сачувајте је на вашем рачунару (нпр. у директоријуму var/www/digiteks).

  2. Инсталирајте Пајтон интерпретер (препоручена верзија 3.12)

  3. У командној линији подесите радно окружење на директоријум у којем је похрањен преузети софтвер

cd ./direktorijum/digiteks/softvera
  1. Инсталиратје неопходне Пајтон пакете
sudo -H pip3 install -r requirements.txt
  1. Инсталирајте Tesseract
sudo apt-get install tesseract-ocr libtesseract-dev libleptonica-dev pkg-config ffmpeg libsm6 libxext6
  1. Инсталирајте Poppler
sudo apt-get install -y poppler-utils
  1. Инсталирајте пакет (tesserocr)
sudo -H pip3 install tesserocr
  1. Инсталација и подешавање apache веб сервера
sudo apt install apache2
apache2 -v
sudo apt-get install libapache2-mod-wsgi-py3
sudo a2enmod rewrite
sudo a2enmod wsgi
sudo nano /etc/apache2/sites-available/digiteks.conf

У конфигурациону датотеку упишите:

<VirtualHost *:5001>

WSGIDaemonProcess digiteks user=www-data group=www-data threads=5
        WSGIScriptAlias / /var/www/digiteks/digiteks.wsgi

        <Directory /var/www/digiteks>
                WSGIProcessGroup digiteks
                WSGIApplicationGroup %{GLOBAL}
                Order deny,allow
                Allow from 127.0.0.1 ::1/128 <ADRESA SERVERA>
        </Directory>
</VirtualHost>

sudo nano /etc/apache2/ports.conf

Listen 5001

Урадите неопходно ажурирање и рестарт сервиса

sudo a2ensite digiteks
sudo service apache2 restart

и апликација ће бити покренута и доступна на порту 5001

bulk процесирање

python bulk.py <путања_до_директоријума_са_датотекама> -j <језик_за_ОЦР> -i <тип_излаза>

  • путања_до_директоријума_са_датотекама је обавезна, а обрађују се све ПДФ датотеке и слике пронађене у директоријуму
  • језик_за_ОЦР (j) није обавезан а подразумевана вредност је "srp+srp_latn+eng". Могуће вредности су:
    • "srp+srp_latn+eng"
    • "srp_latn+srp+eng"
    • "srp"
    • "srp_latn"
    • "eng"
    • "equ"
  • тип_излаза (i) није обавезан а подразумевана вредност и тренутно једина опција је "hocr".

Предстојећи кораци:

  1. Додатна унапређења у виду бољег препознавања текста и структуре документа.

Напомене

Развој апликације, у сарадњи са ЈП Службени Гласник, омогућио је програм Говтех, који финансира Фонд за иновациону делатност Републике Србије.

About

Aplikacija za digitalizaciju dokumenata na srpskom jeziku

Resources

License

Stars

Watchers

Forks

Packages

No packages published