pv-scanner est une application de bureau ergonomique développée pour la saisie rapide de codes-barres GS1 à poids variable, avec export CSV.
Elle est idéale pour la gestion d'inventaire ou le suivi de stocks de produits alimentaires via un simple scanner de codes-barres.
L'application utilise un parsing séquentiel conforme à la norme GS1, permettant de traiter automatiquement les codes-barres complexes avec plusieurs identifiants d'application (IA). Pour les codes non standard, une fonctionnalité de parse manuel permet de définir et sauvegarder des patterns personnalisés.
Cliquez sur l’image pour visionner la vidéo de démonstration sur YouTube.
- Saisie rapide par scanner : champ dédié pour la lecture instantanée.
- Extraction automatique :
- 🧮 Poids : extraction et formatage automatique du poids à partir du code scanné.
- 📅 DLC (Date Limite de Consommation) : extraite si présente dans le code-barres (IA 15).
- 🔄 Conversion automatique : les poids en livres (IA 320x) sont automatiquement convertis en kilogrammes.
- Parsing GS1 conforme Ă la norme :
- Parsing séquentiel des identifiants d'application (IA) selon la norme GS1.
- Support de nombreux IA : GTIN (01), DLC (15), poids net (310x), poids en livres (320x), poids logistique (330x), etc.
- Gestion des IA à longueur variable (numéro de lot, série, etc.).
- Parse manuel :
- Pour les codes non reconnus, définissez manuellement la position du poids avec des marqueurs (
>,,,<). - Les patterns sont sauvegardés et réutilisés automatiquement pour les codes similaires.
- Gestion des patterns sauvegardés (visualisation et suppression).
- Pour les codes non reconnus, définissez manuellement la position du poids avec des marqueurs (
- Tableau interactif :
- Collage multi-lignes possible (plusieurs scans d'un coup).
- Ligne vide toujours disponible pour un nouveau scan.
- Édition manuelle des valeurs.
- Export CSV : un clic génère un fichier CSV (UTF-8 avec BOM) compatible Excel.
- Nettoyage facile : bouton pour vider le tableau après confirmation.
- Total automatique : somme des poids scannés calculée en temps réel.
- Interface ergonomique :
- Zoom ajustable.
- Messages d'erreur visibles.
- Flash visuel lors de l'ajout.
- Feedback sonore intégré (activable/désactivable).
- Lancez l'application :
python pv-scanner.py
- Scannez vos codes-barres ou collez-les dans le champ prévu.
- Vérifiez les informations affichées dans le tableau (poids et DLC extraits automatiquement).
- Pour les codes non reconnus :
- Cliquez sur "Parse manuel".
- Scannez le code, puis insérez les marqueurs
>,,(optionnel),<pour indiquer la position du poids. - Le pattern sera sauvegardé et réutilisé automatiquement pour les codes similaires.
- Cliquez sur Créer CSV pour exporter les données.
- Utilisez Nettoyer pour vider le tableau si nécessaire.
- Utilisez le bouton 🔊/🔇 pour activer/désactiver le feedback sonore.
- Python 3.x
- PyQt6
Installation :
pip install PyQt6L'application utilise un parsing séquentiel conforme à la norme GS1 :
-
Format EAN-13 (13 caractères) :
- Extraction des positions 7–11 (5 caractères) → format
xx,xxx.
- Extraction des positions 7–11 (5 caractères) → format
-
Format GS1 (parsing séquentiel des IA) :
- IA 01 : GTIN (14 chiffres) — ignoré pour l'extraction du poids.
- IA 310x : Poids net en kg (6 chiffres,
x= nombre de décimales).- Exemple :
3103→ 3 décimales (formatxxx,xxx).
- Exemple :
- IA 320x : Poids net en livres (6 chiffres) — converti automatiquement en kg.
- IA 330x : Poids logistique en kg (6 chiffres).
- IA 15 : Date limite de consommation (6 chiffres AAMMJJ) → formatée
DD/MM/YYYY. - IA à longueur variable : numéro de lot (10), numéro de série (21), etc. — gérés automatiquement.
- Autres IA : ignorés mais pris en compte pour le parsing séquentiel.
-
Parse manuel :
- Pour les codes non reconnus, utilisez le bouton "Parse manuel".
- Insérez les marqueurs
>(début),,(décimale optionnelle),<(fin) dans le code scanné. - Le pattern est sauvegardé dans
patterns_parse.jsonet réutilisé automatiquement.
patterns_parse.json: sauvegarde des patterns de parsing manuel (créé automatiquement).- CSV exporté : encodé en UTF-8 avec BOM pour compatibilité Excel.
Pour distribuer l’application sans installer Python, générez un exécutable autonome avec PyInstaller.
-
Installer PyInstaller :
pip install pyinstaller
-
Générer l’exécutable :
pyinstaller --noconfirm --onefile --windowed --icon=favicon.ico --add-data "favicon.ico;." pv-scanner.py--noconfirm: évite les confirmations.--onefile: crée un seul exécutable.--windowed: masque la console.--icon=favicon.ico: ajoute une icône personnalisée.--add-data: Indique à PyInstaller d'ajouter des fichiers ou dossiers.
📂 L’exécutable sera disponible dans le dossier dist/.
- L’icône
favicon.icodoit être dans le même dossier quepv-scanner.py. - Fournir également cette icône lors de la distribution.
- Le premier lancement peut être légèrement plus lent (décompression en mémoire).
👉 Télécharger la version Windows (.exe)
*Fichier autonome, aucune installation Python requise.*
Développé par : www.gaigher.fr
SIRET : 798 691 598 00014
📫 Pour signaler un bug ou proposer une amélioration :
👉 Ouvrir une issue
Ce projet est sous licence MIT.
🧠pv-scanner — un outil simple et efficace pour les inventaires de produits à poids variable basés sur la norme GS1.