Skip to content

gaigher/pv-scanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🧾 pv-scanner — Inventaire Poids Variable GS1 Dernière version

Python PyQt6 License Issues

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.

Aperçu de l'application

🎥 Démonstration

Démonstration pv-scanner

Cliquez sur l’image pour visionner la vidéo de démonstration sur YouTube.


🚀 Fonctionnalités principales

  • 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).
  • 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).

🖥️ Utilisation

  1. Lancez l'application :
    python pv-scanner.py
  2. Scannez vos codes-barres ou collez-les dans le champ prévu.
  3. Vérifiez les informations affichées dans le tableau (poids et DLC extraits automatiquement).
  4. 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.
  5. Cliquez sur Créer CSV pour exporter les données.
  6. Utilisez Nettoyer pour vider le tableau si nécessaire.
  7. Utilisez le bouton 🔊/🔇 pour activer/désactiver le feedback sonore.

🧩 Dépendances

  • Python 3.x
  • PyQt6

Installation :

pip install PyQt6

⚙️ Notes techniques

Parsing des codes-barres

L'application utilise un parsing séquentiel conforme à la norme GS1 :

  1. Format EAN-13 (13 caractères) :

    • Extraction des positions 7–11 (5 caractères) → format xx,xxx.
  2. 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 (format xxx,xxx).
    • 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.
  3. 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.json et rĂ©utilisĂ© automatiquement.

Fichiers générés

  • patterns_parse.json : sauvegarde des patterns de parsing manuel (créé automatiquement).
  • CSV exportĂ© : encodĂ© en UTF-8 avec BOM pour compatibilitĂ© Excel.

🏗️ Création d’un exécutable Windows

Pour distribuer l’application sans installer Python, générez un exécutable autonome avec PyInstaller.

Étapes :

  1. Installer PyInstaller :

    pip install pyinstaller
  2. 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/.

Remarques :

  • L’icĂ´ne favicon.ico doit ĂŞtre dans le mĂŞme dossier que pv-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échargement

Dernière version

👉 Télécharger la version Windows (.exe)
*Fichier autonome, aucune installation Python requise.*


👤 À propos

Développé par : www.gaigher.fr
SIRET : 798 691 598 00014

📫 Pour signaler un bug ou proposer une amélioration :
👉 Ouvrir une issue


📜 Licence

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.