Skip to content

alexDiaconuAlex/Barcode-Decoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tema 1 PP – Barcode Decoder

Descrierea temei

Această temă constă în implementarea unui decodificator pentru coduri de bare de tip EAN-13, pornind de la o imagine alb-negru reprezentată sub formă de matrice binară (0 pentru alb, 1 pentru negru).

Scopul este să extragem numărul format din 13 cifre codificat în barele codului EAN-13.


Ce este un cod de bare EAN-13?

EAN-13 este un cod format din 13 cifre, codificate pe 59 de bare (3 bare start + 42 bare cifre 2-7 + 5 bare centru + 42 bare cifre 8-13 + 3 bare stop). Prima cifră este codificată indirect, prin alegerea unui pattern de paritate pentru primele 6 cifre.

Codificarea cifrelor folosește trei scheme:

  • L (paritate impară)
  • G (paritate pară)
  • R (paritate pară, pentru ultimele 6 cifre)

Există reguli precise pentru structura codului și calculul cifrei de control pentru verificare.


Implementare și cerințe

  • Pornind de la o matrice de pixeli alb-negru (0 = alb, 1 = negru), se decupează rândurile din mijloc pentru analiza codului.
  • Se grupează biții identici consecutivi în perechi (grosime, bit).
  • Se identifică secvențele start, centru și stop, extrăgând cele 59 de bare.
  • Se transformă grupurile de 4 bare în cifre, folosind distanța minimă față de codificările standard L, G, R.
  • Se determină cifra de paritate din codificările primului grup de cifre.
  • Se calculează și verifică cifra de control pentru validare.
  • Rezultatul este codul EAN-13 valid sau None dacă decodarea e invalidă.

Structura proiectului

  • src/ – conține codul sursă Scala, inclusiv fișierul Decoder.scala unde se implementează TODO-urile.
  • Codul de parsare și prelucrare imagine (.ppm → .pbm) este oferit, nu necesită modificări.

Instrucțiuni de configurare

  1. Descarcă arhiva schelet tema1_pp_2025.zip.
  2. Creează un proiect nou în IntelliJ Scala.
  3. Copiază folderele și fișierul din arhivă în root-ul proiectului (folderul src va fi suprascris).
  4. Restart IDE-ul.
  5. Compilează și rulează proiectul.

Recomandări

  • Nu folosi efecte laterale (nu utiliza var).
  • Folosește doar declarații val.
  • Folosește funcții de ordin superior și programare funcțională.
  • Testează pe rândurile din mijloc ale imaginii pentru a crește șansele de succes.

Notă despre vizualizarea imaginilor

Pe WSL/Linux puteți folosi:

sudo apt install feh
feh image.ppm

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages