Nährwertkennzeichnung OCR

  • Mein Team arbeitet an einem Programm, das Nährwertkennzeichnungen mithilfe von OCR lesen kann, ähnlich NutriScanner (obwohl Bei den Bewertungen scheint es nicht besonders gut zu funktionieren.)

    Ich habe andere Fragen gesehen und festgestellt, dass es eine gute Idee wäre, sich zu verbessern das Bild vor dem Ausführen von OCR. Gibt es eine gute Bildbibliothek, die das automatisch tun kann? Ich habe mich umgesehen und zahlreiche Photoshop-Tutorials über die manuelle Vorgehensweise gefunden, aber das ist nicht das, wonach ich suche.

    Ich weiß, dass OCR-Engines wie ABBYY Verarbeitungsfunktionen integriert, aber ich würde es vorziehen, eine Lösung aus Tesseract und einer kostenlosen Bibliothek für die Vorverarbeitung zusammenzustellen.

    Ich habe nicht viel im Weg gefunden die Positionierung der Artikel auf dem Etikett zu nutzen, um die Scangenauigkeit zu verbessern, würden sich jedoch über Vorschläge freuen.

    18 May 2012
    24 revs, 14 users 20%Mike Polen
1 answer
  • Ok, ich habe es herausgefunden, irgendwie. In meinem ursprünglichen Code für den gekrümmten Pfeil war der Winkel für den zweiten Vektor angegeben:

     angleArrow2 = 
      Graphics[Arrow[Table[{x1 + Min[0.5 Sqrt[x2^2 + y2^2], 0.5] Cos[i], 
          y1 + Min[0.5 Sqrt[x2^2 + y2^2], 0.5] Sin[i]}, {i, 0, theta2, 
          1/100}]]];
     

    Das Problem lag nicht unbedingt bei Table, sondern beim Table-Iterator. Ich habe mich immer wieder gefragt, warum die auskommentierte Definition von angleArrow2 funktioniert, wenn die Definition mit Table nicht funktioniert. Ich erkannte, dass der einzige Unterschied zwischen den beiden Versionen von angleArrow2 die Anzahl der Elemente in der Liste in Arrow war. Also begann ich mit der Schrittgröße im Table-Iterator zu spielen. Als ich die Schrittgröße vergrößert habe, um die Anzahl der Elemente in der Liste zu reduzieren, bemerkte ich einen Hinweis auf korrektes Verhalten. Mit anderen Worten, durch Bewegen des Locators für den zweiten Vektor DID wird nur der zweite Vektor verschoben, jedoch nur für eine kurze "Zeit". Nachdem ich den Locator über eine bestimmte Entfernung (die scheinbar von der Schrittgröße in der Tabelle abhing) verschoben wurde, trat das unerwünschte Verhalten erneut auf. D.h. Der zweite Locator bewegte sich zusammen mit dem ersten Locator und änderte anstelle des zweiten Vektors die Größe und Richtung des ersten Vektors.

    Mit einer festen Schrittgröße wie 1/100, wie ich sie ursprünglich hatte oder sogar 1/10, als ich es schließlich versuchte, trat das unerwünschte Verhalten schließlich auf. Also entschied ich mich für eine relative Schrittgröße auf Basis des Winkels (theta2) und änderte meinen Code in:

     angleArrow2 = 
      Graphics[Arrow[Table[{x1 + Min[0.5 Sqrt[x2^2 + y2^2], 0.5] Cos[i], 
          y1 + Min[0.5 Sqrt[x2^2 + y2^2], 0.5] Sin[i]}, {i, 0, theta2, 
          theta2/20}]]];
     

    Jetzt funktioniert es wunderbar! Wenn ein Locator verschoben wird, wird nur der zugehörige Vektor geändert.

    Nun habe ich nicht ganz herausgefunden, warum das funktioniert, aber ein bisschen mehr Nachdenken kann helfen. Wenn jemand eine Idee hat, warum eine absolute Schrittgröße zu unerwünschtem Verhalten geführt hat, während eine relative Schrittgröße korrekt funktioniert hat, würde ich mich sehr freuen, von Ihnen zu hören. Ich denke jedoch, dass Sie meinen Code wirklich bei verschiedenen absoluten Schrittgrößen auswerten müssen, um zu sehen, was ich meine. Bei einer absoluten Schrittgröße wie 1/10, wenn Sie den zweiten Locator verschieben, sehen Sie zunächst nur den zweiten Vektor, aber plötzlich beginnt sich der erste Vektor zu ändern

    29 February 2012
    Ryan Cox