2015-09-27 2 views
4

Juste ce que dit le titre. Strictement parlant, ce que je définis comme cadre de sélection "texte" pour une image en niveaux de gris est un ensemble de 4 coordonnées (x, y, x + largeur, y + hauteur) qui doivent définir une zone rectangle dans cette image qui a le nombre maximum de pixels non blancs et en même temps le moins possible de pixels blancs (sans chager la quantité maximale de pixel non blanc). J'ai le texte entre guillemets puisque les images ne contiennent pas réellement le texte parce que les images ne contiennent que des pixels avec des couleurs.Obtention des coordonnées de la zone de délimitation "texte" d'une image en niveaux de gris en utilisant la ligne de commande dans Linux

Après avoir installé ImageMagick dans mon Ubuntu et en tapant dans le terminal la commande: $convert input.png -trim ouput.png, je reçois:

input.png

output.png

Ouvrir les deux images dans de nouveaux onglets dans votre navigateur Web et vous comprendra la différence qu'ils ont et vous comprendrez aussi ce que je définis comme un cadre de texte. Le fichier output.png a en fait la largeur et la hauteur que je cherche.Je ne sais pas comment obtenir les coordonnées x et y.

La réponse fournie ici (1) pour les pages pdf ne correspond pas à mes critères puisque la boîte de dialogue "texte" que gs me donne a de grandes marges blanches (et autant que je puisse comprendre ce que gs définit comme "texte" pour un pdf est quelque chose de différent de ma définition de "texte" boîte de délimitation pour une image).

+0

Montrez-nous le code que vous avez jusqu'à présent. –

+1

Je n'ai pas de code pour obtenir les coordonnées de la boîte de délimitation de texte telle que je l'ai définie dans mon article. Je connais une commande qui recadre le cadre de texte d'une image comme je l'ai défini: $ convert input.png -trim output.png. Le problème est que je ne sais pas comment obtenir les coordonnées de la boîte de collage de texte. – liaguridio

+0

Essayez-vous de créer un programme pour cela? Si c'est le cas, vous devez essayer d'écrire du code. Si ce n'est pas le cas, vous devriez poster cette question à la place sur SuperUser et demander de l'aide sur l'utilisation des programmes existants. De toute façon, c'est hors-sujet tel qu'il est actuellement écrit. –

Répondre

1

Je ne comprends pas tous les mots dans votre description, et je pense un diagramme aiderait, mais si vous voulez juste savoir ce que -trim ferait que votre exemple de code implique:

identify -format "%@" image.png 
200x100+10+20 

Ainsi, pour votre image, vous obtenez

identify -format "%@" paper.png 
406x620+38+68 

ce qui signifie que votre boîte est de 38 pixels à droite du coin supérieur gauche et 68 pixels vers le bas à partir du coin en haut à gauche, et il est de 406 pixels de large et 620 pixels de hauteur.

Et si je dessine dans ce rectangle en rouge, je reçois:

convert paper.png -stroke red -fill none -draw "rectangle 38,68 444,688" result.png 

enter image description here

Une autre façon d'obtenir le même résultat, mais en utilisant convert en place de identify est:

convert -format %@ paper.png info: 
406x620+38+68 
+0

Merci beaucoup. La sortie de la commande que vous avez fournie me donne les coordonnées que je cherchais dans les images en niveaux de gris jusqu'à présent. – liaguridio

0

Les images ne possèdent pas de 'cadre de sélection de texte', car il n'y a évidemment pas de texte.

Les images contenues dans le fichier PDF peuvent elles-mêmes contenir des pixels blancs, si elles sont numérisées à partir de livres, alors elles le seront certainement. Ces pixels comptent dans le cadre de délimitation de l'image, car ils ne sont pas transparents et obscurciront tout ce qui est dessiné sous eux.

Il est également assez absurde de définir une «zone de délimitation de texte» comme «une zone dans cette image qui n'a pas de marges blanches et uniquement du texte». Si c'est dans une image alors il n'y a pas de texte, seulement des échantillons d'image qui définissent des pixels. C'est une image du texte, pas réellement le texte. Afin de différencier les zones d'une image contenant du texte et les zones contenant du texte, vous aurez besoin d'un logiciel OCR, rien d'autre ne le fera car seul le logiciel OCR est capable de détecter la différence entre le texte et le non-texte.

+0

Merci pour la critique pour mon sujet :). Tu as raison . J'ai modifié pour clarifier certains de mes concepts. – liaguridio