Acest depozit reprezintă acumularea tuturor lucrărilor efectuate în timpul verii Google Code 2018.

  • Student: Sagar Panchal
  • Github: sgrpanchal31
  • Organizare: Fapte despre alimente deschise
  • Proiect: OCR pe tabelul cu fapte nutriționale

Conducta este alcătuită din trei părți majore și anume detectarea tabelelor, detectarea textului și OCR cu post-procesare.

Pentru detectarea tabelelor într-o imagine, folosim modelul de detectare a obiectelor Single Shot Detector (SSD). Modelul este instruit pe API-ul de detectare a obiectelor Tensorflow. Notebook-ul Jupyter furnizat arată modul în care utilizăm graficul pre-instruit pentru a detecta tabelele din imaginile produsului. Înainte de a rula notebook-ul, instalați modelul de detectare a obiectelor din Github Repository al Tensorflow.

detectare textului

Detectarea și extragerea textului

Detectarea textului se face folosind text-detection-ctpn care folosește fast-rcnn pentru a extrage regiunile textuale din imagine. În viitor, intenționăm să îl actualizăm la un model de detectare a textului mai rapid și mai precis.

OCR și post-procesare

Pentru recunoașterea textului, folosim Tesseract OCR. Fiecare casetă de text detectată de la pasul de detectare a textului va fi trecută prin OCR și va fi returnat un șir brut care este apoi trecut prin mai multe etape de post-procesare care curăță șirul (prin expresii regulate) și corectează orice erori de ortografie în șirul symspell algoritm de corectare a ortografiei).

Ieșirea pentru imaginea de mai sus este dată mai jos:

Codul este compatibil cu Python 3.0+. Dacă găsiți orice altă dependență necesară în timpul execuției, ridicați o problemă și informați-o acolo.

Cum să vă testați imaginea

  • Descărcați modelul înghețat pentru ctpn de aici.
  • Salvați modelul în depozitul ./nutrition_extractor/data.
  • Creați un director numit test_images și puneți imaginile în acel folder.
  • rulați python detection.py -i [IMAGE-PATH] din folderul nutrition_extractor.
  • Elaborați un model de detectare a tabelelor pentru a extrage regiunea de interes (tabelul cu informații nutriționale) din imagini.
  • Decupați RoI din imagini și aplicați conducta de detectare a textului în regiune.
  • Treceți fiecare blob de text prin Tesseract OCR pentru a extrage textul.
  • Elaborați o metodă de post-procesare pentru a curăța textul și a extrage eticheta nutrițională și valoarea acesteia.
  • Creați un algoritm de cartografiere spațială pentru a mapa bloburile de text în funcție de locația lor în imagine. (Gata, dar precizia nu este la înălțimea standardelor).

Având în vedere că GSoC 2018 este startul acestui proiect, abia începem. Există o mulțime de lucruri de făcut pe care le vom face

  • Îmbunătățirea algoritmului de cartografiere spațială.
  • Antrenarea și utilizarea unui model de detectare a textului mai rapid și mai precis decât modelul rapid-rcnn utilizat în prezent.
  • Crearea unui set de date de tabel nutrițional mai mare și instruirea pe un model recent și sângerant de detectare a obiectelor pentru a îmbunătăți acuratețea.
  • Dezvoltarea unui algoritm mai bun de preprocesare a imaginii pentru a detecta textul aldin.
  • Implementarea unei metode pentru unificarea celor două modele într-unul, deoarece aceleași calcule se fac de două ori în straturile inițiale ale celor două modele.