ProblemOdakle smo krenuli
Geodetski ured u Splitu izrađuje Elaborat etažiranja za svaku višestambenu zgradu koju ovjerava: Word dokument koji svaki stan opisuje pravnim tekstom i Excel rekapitulaciju koja površine zbraja u suvlasničke dijelove. Brojevi i popisi prostorija već postoje kao tablice nacrtane u AutoCAD DWG-u. Geodet ih je za svaki projekt ručno prepisivao u oba dokumenta, dvaput. Jedna krivo pročitana znamenka poništava udio i dokument se mora izdati ponovno. Posao jednostavan, spor, i takav da postaje sve gori što je petak kasniji.
PristupŠto smo napravili
- 1
Alat čita postojeći DWG ureda. Geodet i dalje crta iste tablice u CAD-u, bez novog predloška i bez drugog izvora istine.
- 2
DWG se pretvara u DXF ugrađenim ODA File Converterom, pa se tablice stanova parsiraju s ezdxf, tako da nazivi prostorija, površine i oznake stanova izlaze kao strukturirani podaci.
- 3
Popunjavaju se stvarni Word i Excel predlošci ureda bez diranja njihovog formatiranja. docxtpl za Word elaborat, zamjena shared-strings datoteke u ZIP-u za Excel rekapitulaciju, pa je ispis bajt po bajt jednak onome što ured godinama šalje klijentima.
- 4
Svaki naziv prostorije prolazi kroz rječnik hrvatskog instrumentala, pa generirani odlomci zvuče kao da ih je napisao čovjek, a ne mail merge.
- 5
Neobavezni prolaz čita PDF građevinske dozvole (digitalni ili skenirani, OCR preko Tesseracta s hrvatskim jezičnim podacima) i vadi službeni opis građevine, pa ni to geodet ne prepisuje.
- 6
Isporučeno kao jedan Windows .exe. Dvoklik, odabir DWG-a, Word i Excel u istoj mapi. Bez Pythona, bez instalacije, bez interneta.
RezultatBrojke nakon lansiranja
DetaljiKako to radi
Čitanje onoga što ured ionako crta
Prije svakog etažiranja geodet zgradu iscrta u AutoCAD-u: tlocrti, a uz njih male tablice s popisom svake prostorije svakog stana i njezinom površinom u kvadratima. Tako ured radi desetljećima i to se neće mijenjati. Prva odluka bila je da alat te tablice čita izravno iz DWG-a, točno onakve kakve se danas crtaju, umjesto da ured ispunjava još jednu tablicu ili web obrazac sa strane.
DWG je zatvoreni Autodeskov format, pa ga alat prvo pretvara u DXF, uz priloženu kopiju besplatnog ODA File Convertera, da se na uredsko računalo ne mora ništa instalirati. Iz DXF-a ezdxf prolazi kroz tablice i čita ćelije kao tekst. Parser upija način na koji su tablice stvarno nacrtane: prostorije prelomljene u dva reda, površine pisane kao 45,96 u jednoj ćeliji i 45.96 u drugoj, povremene bilješke ugurane uz stupac s površinom, oznake stanova koje od projekta do projekta lutaju između S1, Stan 1 i STAN 1. Svaka takva osobitost je malo pravilo na rubu. Sve dalje u lancu smije pretpostaviti uredne podatke jer je nered već upijen.
Popunjavanje uredskih predložaka
Ured godinama šalje isti Word elaborat i istu Excel rekapitulaciju. Klijenti, javni bilježnici i zemljišnoknjižni odjel prepoznaju taj raspored na prvi pogled. Mijenjanje izgleda dokumenata nikad nije bilo na stolu — trebalo se promijeniti samo tko tipka.
Zato alat popunjava uredske vlastite datoteke. Word predložak je postojeći TEKST.docx s oznakama umetnutima među odlomke, obrađen kroz docxtpl tako da svaki font, svaka tabulatorska pozicija i svaki prijelom stranice ostanu netaknuti. Excel je teži: openpyxl prepiše dovoljno radne knjige da razbije pažljivo posložene širine stupaca i uvjetno oblikovanje. Zato alat prema .xlsx postupa kao prema ZIP arhivi koja on i jest, uređuje samo sharedStrings.xml unutar nje i zapisuje bajtove natrag. Rezultat se u Excelu otvara jednak izvorniku, samo s novim brojevima u ćelijama u koje bi geodet ionako upisivao. Sve što alat proizvede i dalje se može otvoriti, dotjerati i spremiti rukom, onako kako ured oduvijek radi.
Hrvatska gramatika kao zaseban korak
Word elaborat nije tablica nego tekst. Svaki stan dobije odlomak koji otprilike glasi: stan se sastoji od kuhinje, sobe, kupaonice i hodnika, s pripadajućom natkrivenom terasom i spremištem. U hrvatskom se nazivi prostorija mijenjaju ovisno o mjestu u rečenici. Kuhinja je kuhinja u nominativu i kuhinjom u instrumentalu, a elaboratu trebaju oba oblika, u različitim odlomcima, za istu prostoriju.
Pogrešan padež je ono po čemu se odmah vidi da je dokument složio stroj. Zato alat nosi mali rječnik koji svaki naziv prostorije i pomoćne prostorije koji ured koristi preslikava iz nominativa u instrumental, uz normalizaciju koja uredske inačice pisanja (wc, WC, w.c.) svodi na jedan oblik prije traženja. Nove riječi se dodaju u rječnik prvi put kad se pojave, i sljedeći elaborat koji ih koristi jednostavno radi.
Izvlačenje opisa građevine iz PDF-a dozvole
Jedno polje na naslovnici je službeni opis građevine — rečenica koja počinje s dozvoljava se uporaba i nastavlja se odlomkom pravnog jezika. Ona živi u građevinskoj dozvoli, PDF-u koji ured ionako ima za svaki projekt. Prepisivanje rukom je sporo i podložno greškama, a promjena jedne riječi mijenja pravno značenje.
Alat uz to polje ima gumb koji otvara PDF dozvole i izvlači rečenicu. Ako PDF ima tekstualni sloj, čita se izravno. Ako je skenirana slika, preko nje prvo prođe Tesseract s hrvatskim jezičnim paketom. Oba puta su spakirana u .exe, pa geodet vidi jedan gumb, a ne dva postupka. Izvučena rečenica padne u polje, geodet je jednom pogleda, i naslovnica je gotova.
Isporuka kao dvoklik
Korisnik je jedna osoba koja vodi geodetski ured iz mape s CAD datotekama i Windows prijenosnika. Ne želi web aplikaciju, korisnički račun, prijavu ni bilo što u oblaku. Želi otvoriti program, odabrati DWG i dobiti dvije datoteke natrag u istoj mapi, onako kako radi svaki drugi alat koji koristi.
Cijeli program se isporučuje kao jedan .exe složen PyInstallerom. Python, ODA pretvarač, Tesseract, hrvatski jezični podaci, Word i Excel predlošci i ikona — sve je spakirano unutra. Bez instalacije, bez administratorskih prava, bez potrebe za internetom. Prva verzija je izrađena i predana u četiri tjedna. Od tada je svaka promjena mala revizija: novi naziv prostorije u rječniku, izmjena Excel predloška nakon što je službenik tražio drugačiju oznaku stupca — isporučena kao novi .exe koji se ubaci u istu mapu. Alat se uklopio u ritam ureda umjesto da ured mijenja svoj.