diff --git a/README.md b/README.md index b3761fb..2e2ac4d 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,165 @@ #### Дигитекс се може покретати као [Фласк](https://flask.palletsprojects.com/) веб апликација на рачунарима са _Виндоус_ и _Виндоус сервер_ оперативним системима, за шта је неопходно инсталирати [Пајтон 3.12](https://www.python.org/downloads/release/python-3120/), или се може скинути и покренути компајлована верзија која у себи садржи неопходан софтвер. -#### Предстојећи кораци: -1. Припрема детаљнијег упутства за инсталацију и употребу; +# Покретање апликације -2. Имплементација адекватних језичких модела путем библиотеке _трансформерс_; +## Виндоус апликација +Скините прекомпајловану апликацију доступну на [Гитхаб репозиторијуму софтвера] (https://github.com/procesaur/digiteks/releases) и покрените програм на вашем рачунару. -3. Припрема софтвера за извршење на _Линукс_ оперативним системима. +## Виндоус (командна линија, припремљено виртуелно окружење) +1. Преузмите апликацију у целости и сачувајте је на вашем рачунару. + +2. Инсталирајте Пајтон интерпретер (препоручена верзија 3.12) + +3. У командној линији подесите радно окружење на директоријум у којем је похрањен преузети софтвер +```console +cd ./direktorijum/digiteks/softvera +``` + +4. Покрените припремљено виртуелно окружење +```console +.\venv\Scripts\activate +``` + +5. Покрените апликацију +```console +python main.py +``` + +## Виндоус (командна линија, ваше Пајтон окружење) +1. Преузмите апликацију у целости и сачувајте је на вашем рачунару. + +2. Инсталирајте Пајтон интерпретер (препоручена верзија 3.12) + +3. У командној линији подесите радно окружење на директоријум у којем је похрањен преузети софтвер +```console +cd ./direktorijum/digiteks/softvera +``` + +4. Инсталиратје неопходне Пајтон пакете +```console +pip install -r requirements.txt +``` + +5. Преузмите инсталацију пакета _tesserocr_ за вашу верзију Пајтон интерпретера на [овој адреси](https://github.com/simonflueckiger/tesserocr-windows_build/releases) + +6. Инсталирајте преузети пакет (_tesserocr_) +```console +pip install <путања/преузетог/пакета/име>.whl +``` + +5. Покрените апликацију +```console +python main.py +``` + +## Linux (командна линија, ваше Пајтон окружење) +1. Преузмите апликацију у целости и сачувајте је на вашем рачунару. + +2. Инсталирајте Пајтон интерпретер (препоручена верзија 3.12) + +3. У командној линији подесите радно окружење на директоријум у којем је похрањен преузети софтвер +```console +cd ./direktorijum/digiteks/softvera +``` + +4. Инсталиратје неопходне Пајтон пакете +```console +pip install -r requirements.txt +``` + +5. Инсталирајте _Tesseract_ +```console +apt-get install tesseract-ocr libtesseract-dev libleptonica-dev pkg-config +``` + +6. Инсталирајте _Poppler_ +```console +apt-get install -y poppler-utils +``` + +7. Инсталирајте пакет (_tesserocr_) +```console +pip install pip install tesserocr +``` + +8. Покрените апликацију +```console +python main.py +``` + +## _apache_ веб апликација (_Linux_ пример) +1. Преузмите апликацију у целости и сачувајте је на вашем рачунару (нпр. у директоријуму _var/www/digiteks_). + +2. Инсталирајте Пајтон интерпретер (препоручена верзија 3.12) + +3. У командној линији подесите радно окружење на директоријум у којем је похрањен преузети софтвер +```console +cd ./direktorijum/digiteks/softvera +``` + +4. Инсталиратје неопходне Пајтон пакете +```console +pip install -r requirements.txt +``` + +5. Инсталирајте _Tesseract_ +```console +apt-get install tesseract-ocr libtesseract-dev libleptonica-dev pkg-config +``` + +6. Инсталирајте _Poppler_ +```console +apt-get install -y poppler-utils +``` + +7. Инсталирајте пакет (_tesserocr_) +```console +pip install pip install tesserocr +``` + +8. Инсталација и подешавање _apache_ веб сервера + +```console +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 +``` + +У конфигурациону датотеку упишите: + +```apache + +Options Indexes FollowSymLinks +AllowOverride All +Require all granted + +``` + +sudo nano /etc/apache2/ports.conf +```apache +Listen 5001 +``` + +Урадите неопходни рестарт сервиса + +```console +sudo service apache2 restart +``` + +и апликација ће бити покренута и доступна на порту 5001 + +# Предстојећи кораци: +1. Припремање прекомпајловане апликације за _Linux_ оперативне системе; + +2. Припрема детаљнијег упутства за употребу; + +2. Имплементација адекватних језичких модела путем библиотеке _трансформерс_. + +# Напомене #### Развој апликације, у сарадњи са ЈП Службени Гласник, омогућио је програм [Говтех], који финансира Фонд за иновациону делатност Републике Србије. diff --git a/helper.py b/helper.py index 9558845..07939fb 100644 --- a/helper.py +++ b/helper.py @@ -1 +1,6 @@ -cfg = {} \ No newline at end of file +from os import name + +cfg = {} + +def isWindows(): + return name == 'nt' \ No newline at end of file diff --git a/ocrworks.py b/ocrworks.py index 6a75168..00efe32 100644 --- a/ocrworks.py +++ b/ocrworks.py @@ -8,19 +8,21 @@ from tesserocr import PyTessBaseAPI from imageworks import improve_image, img2bytes +from helper import isWindows + print(cpu_count()) pool = ThreadPool(cpu_count()) -binpath = px.join(px.dirname(px.realpath(__file__)), "bin\\") -for x in listdir(binpath): - environ['PATH'] += pathsep + px.join(px.dirname(px.realpath(__file__)), "bin\\" + x) -environ['PATH'] += pathsep + px.join(px.dirname(px.realpath(__file__)), "bin") - +if isWindows(): + binpath = px.join(px.dirname(px.realpath(__file__)), "bin\\") + for x in listdir(binpath): + environ['PATH'] += pathsep + px.join(px.dirname(px.realpath(__file__)), "bin\\" + x) + environ['PATH'] += pathsep + px.join(px.dirname(px.realpath(__file__)), "bin") -tessenvirons = ["OMP_NUM_THREADS","OMP_THREAD_LIMIT","MKL_NUM_THREADS","NUMEXPR_NUM_THREADS","VECLIB_MAXIMUM_THREADS","OCR_THREADS"] -for x in tessenvirons: - environ[x] = str(1) + tessenvirons = ["OMP_NUM_THREADS","OMP_THREAD_LIMIT","MKL_NUM_THREADS","NUMEXPR_NUM_THREADS","VECLIB_MAXIMUM_THREADS","OCR_THREADS"] + for x in tessenvirons: + environ[x] = str(1) def ocr_pdf(file_bytes): diff --git a/requirements.txt b/requirements.txt index 122d2d0..fc79f54 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,4 @@ pdf2image==1.17.0 Pillow==10.4.0 psutil==6.0.0 PyPDF2==3.0.1 -tqdm==4.66.2 +tqdm==4.66.2 \ No newline at end of file