Python-OCR : Konvertieren Sie Gescannte Bild In Text Zur Bearbeitung
Ich versuche zum erstellen einer Antwort-Papier markieren (multiple-choice-Frage) python-Anwendung. Die Antwort Blatt wird gescannt, in Bild-Datei (gif,png,jpg,je nachdem, welches format benötigt wird).
Meine App hat Zugriff auf die Datenbank, in der alle Antworten gespeichert sind.
Also,alles, was Sie brauchen, ist eine Art von Daten, die aus gescannten Bild, so dass Sie vergleichen können, die Antwort und berechnen Sie die Markierungen.
Die Antwort Blatt hat Feste Maße mit der Tabelle format wie diese ( die Antworten werden markiert, indem Sie " X " durch die Kandidaten geben Ihre Antworten):
Nach der Suche durch das internet, fand ich, dass es ein paar OCR-APIs zur Verfügung.
Erste ist Pytesser
. Es ist sehr einfach zu bedienen und die Ergebnisse sind ganz okay. Aber es funktionieren nur für die Bilder mit nur Reine Texte. Also, ich denke, es ist nicht geeignet.
Den zweiten fand ich Ocropus
. Es scheint mächtig, aber in seiner Dokumentation
Windows
OCRopus setzt viel auf POSIX-Pfad-Namen und Datei-Systeme.
Sie können die Installation OCRopus auf Windows verwenden . Ein einfacher Weg
ist die Installation von VirtualBox, und führen Sie OCRopus in Ubuntu unter VirtualBox.
So, ich denke, es ist vor allem für linux. Ich konnte nicht finden, eine detailliert Montageanleitung für Fenster-Plattform. ( Ich bin ein Anfänger, also ich könnte falsch sein)
Den Dritten habe ich gefunden, ist python-tesseract
ein wrapper für Tesseract OCR
. In Ihrer Seite, die Installations-Anleitung zur Verfügung gestellt wurde. Grundsätzlich, ich brauche,
- python-tesseract-win32.deb
- python-opencv
- numpy
aber ich habe keine Ahnung, wie man installieren .deb
- Dateien auf Fenster. Ich habe die opencv
und nampy
bereits installiert.
Also die folgenden sind meine Fragen:
(1) auf welche Weise kann ich konvertieren Sie die Tabelle Bild in verarbeitbaren Daten(ist es überhaupt möglich?)?
(2) gibt es irgendeine andere nützliche OCR-APIs, die ich hier nicht erwähnt, die hilfreich sein könnten?
(3) Schließlich (meine dumme Idee) Ist es möglich, zu teilen das Bild in kleine chucks(basierend auf der Größe der Zellen der Tabelle - da die Tabelle Abmessungen sind bekannt) mit PIL
und verwenden Sie dann pytesser
konvertieren jedes kleine Bilder in den text, danach das die Daten entsprechend aufbereitet?
Zur info: ich brauche es für die Windows-Plattform, möglicherweise auch für windows xp 32 bit. Ich bin mit python-2.7.5.
- .deb Linux-Deiban/Ubuntu-pachage-Dateien, die Sie im Grunde genommen nicht installieren Windows.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antworten entsprechen Ihre zahlen
1) OCR ist im Allgemeinen sehr hart, aber (gute Nachricht für Sie) für test-Ergebnis der Verarbeitung, ich glaube, es ist fast ein problem gelöst. In diesem Sinne gibt es bewährte Lösungen für solche Probleme. Die Schulsysteme wurden, dies zu automatisieren grading 'scantron' tests seit Jahren, so dass, wenn Sie Zugang zu solchen Ressourcen gehen, die route könnte Ihre beste Wette. Zumindest sollten Sie überprüfen, wie Sie es tun
2) ich bin sicher, es gibt andere, aber diese sind die wichtigsten, kostenlosen Tools, die ich kenne
3)ich denke, wenn Sie versuchen, tun dies auf einem budget, und die Zeit ist weniger ein Problem, Ihre 'dumme' Idee ist eigentlich nicht dumm überhaupt. Es könnte der beste Weg, es zu tun, und es ist wahrscheinlich, dass der scantron-test Grader verwenden eine ähnliche Methode. Sie wissen, die genauen Abmessungen des test-Formular. Sie können wissen, den direkten pixel-mapping von wo man schaut. Könnten Sie pytesser sehr leicht. Beachten Sie, dass pytesser manchmal braucht Sie, um die Größe des Bildes (manchmal bis, manchmal unten), um die beste Genauigkeit.
3)b möchten Sie vielleicht zu prüfen, Ihre eigenen Rollen-Lösung. Sie konnten mit dem Konzept der morphologischen Operationen (numpy und anderen Bild-Bibliotheken können dies tun, fast out of the box). Sie könnten nicht einmal brauchen, diese Operatoren und einfach eine binäre Schwelle in den Zeilen der Tabelle (vorausgesetzt, Sie haben bereits schneiden Sie das Bild in die Tabelle Zeilen) und einfach suchen, blobs und markieren Sie die Noten so, wie aus der Spalte mit den meisten blob-Werte.