Wiki source code of Intrastatmeldungen

Last modified by Dimitri Rupp on 2026/07/08 12:34

Hide last authors
Dimitri Rupp 1.1 1 {{box cssClass="floatinginfobox" title="**Auf dieser Seite**"}}
2 {{toc/}}
3 {{/box}}
4
5 = 📦 Intrastatmeldungen (Automatisierung) =
6
7 {{info}}
8 **Zweck:** Automatisierte Erstellung von Intrastat-Importmeldungen aus Lieferantenrechnungen — mit KI-gestützter Extraktion und automatischer KN8-Code-Ermittlung.
9 {{/info}}
10
11 == Überblick ==
12
13 Dieses Projekt automatisiert die Erstellung von Intrastat-Importmeldungen aus Lieferantenrechnungen. Der Prozess besteht aus mehreren Schritten:
14
15 1. Einlesen einer Basis-Exceldatei
16 1. Auslesen der zugehörigen PDF-Rechnungen
17 1. KI-gestützte Extraktion der Artikelinformationen
18 1. Automatische Ermittlung fehlender KN8-Codes
19 1. Erstellung einer Datenerfassungsdatei
20 1. Manuelle Prüfung der Ergebnisse
21 1. Konvertierung in das endgültige CSV-Format für die Intrastatmeldung
22
23 == Prozessübersicht ==
24
25 {{mermaid}}
26 flowchart TD
27 A["Basis-Excel"] --> B["run_basis.py"]
28 B --> C["basis_plus_datacollection.py"]
29 C --> D["PDF-Auswertung<br/>datacollection.py"]
30 D --> E["fehlende KN8-Codes ergänzen<br/>find_missing_kn8.py"]
31 E --> F["Datenerfassung.xlsx"]
32 F --> G["manuelle Prüfung"]
33 G --> H["run_converter.py"]
34 H --> I["converter.py"]
35 I --> J["Import_MM_YYYY.csv"]
36 {{/mermaid}}
37
38 == Projektstruktur ==
39
40 {{code}}
41 01_Basis_PDF/ Eingabedateien (Basis-Excel + PDFs)
42 02_Review/ erzeugte Datenerfassung
43 03_Checked/ manuell geprüfte Exceldateien
44 04_Final/ finale CSV-Dateien
45
46 basis_plus_datacollection.py
47 datacollection.py
48 find_missing_kn8.py
49 converter.py
50 run_basis.py
51 run_converter.py
52 core.py
53 {{/code}}
54
55 == Module ==
56
57 === core.py ===
58
59 Zentrale Hilfsfunktionen: RunConfig, Konfigurationsdaten für einen Lauf, Dateiprüfungen, Extraktion von Monat und Jahr aus Dateinamen, allgemeine Hilfsfunktionen.
60
61 === run_basis.py ===
62
63 Startet den Verarbeitungsprozess:
64
65 * sucht neue Basisdateien
66 * extrahiert Monat, Jahr und Firmenname
67 * erstellt eine RunConfig
68 * startet ##basis_plus_datacollection##
69 * verschiebt erfolgreich bearbeitete Dateien nach **Erledigt**, fehlerhafte nach **Fehler**
70
71 === basis_plus_datacollection.py ===
72
73 Hauptpipeline und Kern des Projekts — verantwortlich für: Einlesen der Basisdatei, Verarbeitung aller Rechnungs-PDFs, Zusammenführen der Daten, Bereinigung, Ergänzung fehlender KN8-Codes und Erzeugen der Datenerfassungsdatei.
74
75 === datacollection.py ===
76
77 Extrahiert Informationen aus PDF-Rechnungen.
78
79 **Technologien:** PyPDF2, PyMuPDF (fitz), pdf2image, Tesseract OCR, DocTR OCR, OpenAI API.
80
81 **Extrahierte Informationen:** Warenbeschreibung, Handelspartnerland, Ursprungsland, Eigenmasse, Anzahl, Nettopreis, KN8-Code (falls vorhanden). Die KI liefert strukturierte JSON-Daten, die anschließend in ein Pandas-DataFrame überführt werden.
82
83 === find_missing_kn8.py ===
84
85 Ermittelt fehlende KN8-Codes:
86
87 1. Normalisierung der Warenbeschreibung
88 1. Erstellung von OpenAI-Embeddings
89 1. Vergleich mit vorhandenen KN8-Daten
90 1. Auswahl der ähnlichsten Warentexte
91 1. Zuordnung des wahrscheinlichsten KN8-Codes
92
93 Verwendet: ##text-embedding-3-small##, SequenceMatcher, Vektorvergleich.
94
95 === converter.py ===
96
97 Erstellt die finale CSV-Datei: Einlesen der geprüften Datenerfassung, Gruppierung gleicher Positionen, Summierung der Mengen und Werte, Formatierung der Zahlen, Export ohne Spaltenüberschriften. Ausgabe: ##Import_MM_YYYY_Firma.csv##.
98
99 == Verwendete Bibliotheken ==
100
101 * **Datenverarbeitung:** pandas, numpy
102 * **PDF:** PyPDF2, PyMuPDF, pdf2image
103 * **OCR:** Tesseract, DocTR
104 * **KI:** OpenAI API, Embeddings, GPT
105 * **Sonstiges:** pathlib, difflib, json, tomllib, pycountry
106
107 == Benötigte Eingaben ==
108
109 Basis-Exceldatei · Ordner mit Rechnungs-PDFs · KN8-Datei · OpenAI-API-Key.
110
111 == Fehlerbehandlung ==
112
113 Das Projekt prüft u. a. die Existenz aller Eingabedateien, gültige Excel-Dateien, vorhandene PDF-Verzeichnisse sowie Monat/Jahr im Dateinamen. Fehlerhafte Eingaben werden in den Ordner **Fehler** verschoben.
114
115 == Server ==
116
117 Technischer User: **intrastat** (mit ##sudo su - intrastat## arbeiten). Das Projekt liegt unter ##/home/intrastat/scripts/intrastat/##.
118
119 **Geplanter Ablauf:**
120
121 * Basisdateien + Rechnungs-PDFs kommen auf ##\\atvietfs01\daten\IT\Intrastat##
122 * Fabric-Gateway-Verbindung zu File- und KI-Server
123 * Fabric-Notebook überwacht den Fileserver; sind Dateien vorhanden → Kopie auf Fabric
124 * KI-Server überwacht Fabric; sind Dateien vorhanden → Skripte laufen durch
125 * Ergebnisse wieder in umgekehrter Richtung auf den Fileserver
126