LexFlow este un serviciu pentru descărcarea, parsarea și vizualizarea legislației române de pe portalul legislatie.just.ro.
Proiectul permite:
- descărcarea automată a documentelor legislative
- extragerea structurii ierarhice a legilor (părți, titluri, capitole, secțiuni, articole)
- construirea unui graf de modificări care arată cum o lege a fost afectată de alte acte normative
- generarea textului complet al legii (curat, fără adnotări HTML)
- rezumarea automată a documentelor cu ajutorul Gemini AI
- căutarea legislației direct din interfața web
| Funcționalitate | Descriere |
|---|---|
| Descărcare | Descarcă automat documentul de pe Portal Legislativ |
| Parsare structurală | Extrage ierarhia completă: părți → titluri → capitole → secțiuni → articole |
| Graf de modificări | Construiește un graf interactiv care vizualizează cum legea a fost modificată/abrogată/completată de alte acte |
| Text complet | Generează un fișier .txt curat cu tot textul legii |
| Rezumat AI | Generează un rezumat structurat al legii folosind Gemini AI (streaming) |
| Căutare | Caută legi după titlu, tip de document (LEGE, OUG, HG etc.) și an |
| Interfață web | Server Flask cu UI pentru toate operațiunile de mai sus |
- Python 3.10+
- Conexiune la internet (pentru descărcarea documentelor)
- Cheie API Gemini (opțional, doar pentru funcția de rezumare)
git clone https://github.com/your-username/LawIndex.git
cd LawIndexpython3 -m venv venv
source venv/bin/activate # macOS / Linux
# venv\Scripts\activate # Windowspip install flask requests beautifulsoup4Pentru funcția de rezumare AI (opțional):
pip install google-genaiNecesară doar dacă vrei să folosești funcția de rezumare automată:
export GEMINI_API_KEY="API_KEY"Pornește serverul Flask:
python server.pyDeschide browserul la http://localhost:5001.
Din interfață poți:
- căuta un act normativ după titlu / număr / an
- introduce un ID sau URL de document de pe Portal Legislativ
- genera graful de modificări
- vizualiza textul complet și rezumatul AI al legii
Graful interactiv de modificări, cu filtre pe tip de acțiune (Abrogat, Introdus, Modificat, Amendat) și panou de detalii la selectarea unei muchii:
Descarcă și procesează un document:
python main.py --ids 103284Generează textul complet al legii:
python main.py --ids 103284 --complete-lawConstruiește graful de modificări (1 nivel adâncime):
python main.py --ids 103284 --link-graphGraf cu adâncime mai mare + descărcare automată a documentelor referite:
python main.py --ids 103284 --link-graph --depth 2 --downloadProcesare simultană a mai multor documente:
python main.py --ids 103284,109648,120609 --complete-law --link-graph| Parametru | Descriere |
|---|---|
--ids |
ID-urile documentelor, separate prin virgulă (obligatoriu) |
--complete-law |
Generează output/<id>/complete_law.txt |
--keep-annotations |
Păstrează adnotările de modificare (la DD-MM-YYYY, ...) în textul complet |
--link-graph |
Construiește graful de modificări (output/<id>/link_graph.*) |
--depth N |
Numărul de niveluri de referințe de urmărit (implicit: 1) |
--download |
Descarcă automat documentele referite necachate |
--all-refs |
Include și referințe HG/DECIZIE, nu doar LEGE/OUG/OU |
--max-nodes N |
Limita maximă de noduri în graf (implicit: 300) |
--citations |
Include și muchiile de citare (nu doar modificările) în graf |
input/
<doc_id>/
index.html # HTML descărcat de pe Portal Legislativ
database.json # Structura completă a documentului (JSON)
tree.txt # Arbore structurat al legii
full_tree.txt # Arbore complet cu text
filtered_tree.txt # Arbore filtrat (doar LEGE/OUG/OU)
filtered_database.json
output/
<doc_id>/
complete_law.txt # Textul complet al legii
link_graph.json # Graful de modificări (JSON)
link_graph.html # Vizualizare interactivă a grafului
link_graph.dot # Graf în format Graphviz
modifications.txt # Lista modificărilor în format text
summary.txt # Rezumatul generat de AI (dacă a fost solicitat)
ID-ul numeric se găsește în URL-ul paginii de pe Portal Legislativ:
https://legislatie.just.ro/Public/DetaliiDocument/103284
^^^^^^
acesta este ID-ul
Poți introduce direct URL-ul complet sau doar ID-ul numeric în interfața web sau la parametrul --ids.
Distribuit sub licența MIT. Vezi fișierul LICENSE pentru detalii.



