Hvis du jobber med dette i Kartverket-sammenheng, så skal du være inneforstått med de relevante rutinene før du begynner med å arbeide. Les rutinene på confluence her
Prosjektet genererer automatiske sladdinger av personnummer og d-nummer i dokumentbestillinger. Løsningen benytter Tesseract OCR for å gjenkjenne tekst i dokumenter, og klassifiserer områder med sensitive opplysninger gjennom regex- og nøkkelordssøk.
- Docker
- NVIDIA GPU med CUDA 12.1-støtte
- NVIDIA Container Toolkit
På macOS:
brew install poppler tesseractProsjektet bruker nvidia/cuda:12.1.1-runtime-ubuntu22.04 som base-image med Python 3.10. Docker og NVIDIA Container Toolkit må være installert og konfigurert på forhånd.
# Bygg image
docker build --tag smart_sladding_app:latest .
# Bak proxy:
docker build \
--build-arg http_proxy=http://159.162.48.7:3128 \
--build-arg https_proxy=http://159.162.48.7:3128 \
--build-arg no_proxy=localhost,127.0.0.1 \
--tag smart_sladding_app:latest .docker compose up -dDette starter to tjenester:
- prod på port 5071 (
MODE=prod) - dev på port 5072 (
MODE=dev)
docker run -it --gpus all \
-v /data/docker/ml_logs:/data/ml_logs \
-p 5071:8080 \
-e MODE=prod \
-e HTTP_PROXY=http://159.162.48.7:3128 \
-e HTTPS_PROXY=http://159.162.48.7:3128 \
--name smsl-server-prod \
smart_sladding_app:latestcurl -X POST http://localhost:5071/model \
-H "Content-Type: application/pdf" \
--data-binary "@app/testdokument-2.pdf"git clone https://github.com/kartverket/dokumentbestilling-smart-sladding.git
cd dokumentbestilling-smart-sladdingpython3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtFor onprem maskin, finn de nødvendige installasjonspakkene for Tesseract og Poppler, og installer disse.
- poppler versjon kan sjekkes med
pdftoppm -v - tesseract versjon kan sjekkes med
tesseract -v
cd app
python3 app.pymkdir -p app/logs
curl -X POST http://localhost:5070/model \
-H "Content-Type: application/pdf" \
--data-binary "@app/testdokument-2.pdf"cd app
chmod +x start_production.sh
./start_production.shDersom maskinen ikke har direkte internettilgang, last ned modellene manuelt og plasser dem i tmp/.EasyOCR/model:
curl -L -x http://<proxyip>:<proxyport> -o "latin_g2.zip" https://github.com/JaidedAI/EasyOCR/releases/download/v1.3/latin_g2.zip
curl -L -x http://<proxyip>:<proxyport> -o "craft_mlt_25k.zip" https://github.com/JaidedAI/EasyOCR/releases/download/pre-v1.1.6/craft_mlt_25k.zip
mkdir -p tmp/.EasyOCR/model
mv latin_g2.zip craft_mlt_25k.zip tmp/.EasyOCR/model/
cd tmp/.EasyOCR/model && unzip latin_g2.zip && unzip craft_mlt_25k.zipKjør modellen på ett dokument med doc_id på formen <aar>_<nr>_<embete>:
predicted_boxes = get_predicted_boxes_on_doc(doc_id, base_url)Funksjonen returnerer predikerte avgrensingsboksene og lagrer et bilde.
Kjør evaluation_main.py. Minor-versjonsøkning i current_model_version_number kjører reglene på nytt med cachet OCR-lesing. Major-versjonsøkning kjører OCR på nytt.
Første gang tar OCR-lesingen 8+ timer for 1400 dokumenter.
Se denne Stack Overflow-responsen.
Se CONTRIBUTING.md.
Se SECURITY.md for rapportering av sårbarheter.