Ich habe versucht, ein wöchentliches Menü pdf zu nehmen und es in Gitterbox für das Zuschneiden trennen und später OCR jeweils mit TesseractOCR.Trenngitterzellen aus einem Bild und beschneiden sie
Ich habe lineJunctions gesehen, die hier hilfreich sein könnte, aber konnte sie nicht in imagemagick php Dokumentation finden. Ich habe auch Hough Lines in a similar stackoverflow question gesehen, aber war wieder nicht in der Lage, sie in der PHP-Dokumentation zu finden.
//read the image
$im = new Imagick();
$im->readimage('menu.png');
//resize and contrast
$im->resizeImage($im->getImageWidth()/6, $im->getImageHeight()/6 , 9, 1);
$im->thresholdImage(0.65 * Imagick::getQuantum());;
//remove "noise"
//this is done by creating two new images where only horizontal lines, then vertical are preserved using morphology and then combined into one
$horizontalLines = clone $im;
$verticalLines = clone $im;
$horizontalLineKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_RECTANGLE, "19x1");
$horizontalLines->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $horizontalLineKernel);
$verticalLineKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_RECTANGLE, "1x15");
$verticalLines->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $verticalLineKernel);
$horizontalLines->compositeimage($verticalLines, 5, 0, 0);
$im = clone $horizontal;
$horizontalLines->clear();
$horizontalLines->destroy();
$verticalLines->clear();
$verticalLines->destroy();
// Create boxes at corners
// These are at points from which I intent to create the individual grid boxes
$plusKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_PLUS, "4");
$im->morphology(\Imagick::MORPHOLOGY_OPEN, 1, $plusKernel);
$squareKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_SQUARE, "2");
$im->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $squareKernel);
Auf dieser Weise ich mit einem Bild mit Kästen am Ende, die, wenn ich Axt bekommen, y, Breite und Höhe, ich soll es um die Koordinaten zu erhalten, jedoch in der Lage sein, verfehlt den Boden rechte Ecke und ist sehr chaotisch. Ich bin mir sicher, dass es einen besseren Ansatz geben muss.
Das Bild wird verkleinert und dann zu gehoben Ich plane die Koordinaten von 6, wie bei $im->resizeImage()
gesehen. Gibt es einen besseren Weg, sollte ich das tun?
Bitte klären. Versuchen Sie, die Boxlinien zu bekommen? Oder versuchen Sie, den Text innerhalb der Box-Zeilen als separate Bilder für jede Zelle zu bekommen? Wenn Letzteres und die Boxen die gleiche Größe haben, können Sie das Bild auf den Bereich der regulären Gruppe von Feldern zuschneiden und ImageMagick verwenden, um einen Kachelzuschneiden durchzuführen. Siehe http://www.imagemagick.org/Usage/crop/#crop_tile. Möglicherweise müssen Sie die Kacheln ein wenig rasieren, um die angezeigten Gitterlinien zu entfernen. Wenn Sie versuchen, die Ecken zu finden, können Sie die Plus-Form mit -morphology verwenden, um die Schnittpunkte zu finden. Möglicherweise müssen Sie einige Ecken bereinigen. – fmw42
Das Menü kommt nicht immer in den gleichen Zellen - im selben Muster, deshalb versuche ich zu erkennen, wo die Zellen sind, ohne sie manuell zu setzen. Idealerweise sollte die Ausgabe jeder Zelle durch Erkennung abgeschnitten sein - nicht fest.Ich kann es jedoch von dem Punkt aus nehmen, an dem ich die Positionen der Punkte kenne, wie in der letzten Abbildung in einer Anordnung von x und y gezeigt. Verdeutlicht das, worauf ich abziele? –