IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

enlever tiret en fin de ligne pour OCR


Sujet :

Langage Perl

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 398
    Points : 193
    Points
    193
    Par défaut enlever tiret en fin de ligne pour OCR
    Bonjour,

    pas du tout informaticien, je suis en train de m'initier à Perl très progressivement.

    • J'ai obtenu par OCR la transcription d'un texte.jpg en un texte.txt.
    • Très fidèle, mon logiciel a évidemment transcrit tous les tirets qui séparent les mots en fin de ligne pour justifier le texte.
    • Avec Perl, j'aimerais effacer ces tirets de fin de ligne. Tant-pis, ce n'est pas grave si week-end devient weekend, le tout c'est qu'il enlève tout les tirets qui ralentissent sensiblement la lecture.


    La solution provisoire que j'ai, et qui ne me convient pas, est celle ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/usr/bin/perl
    open (F, "temp.txt") ;
    open (G, ">resu.txt");
    while (<F>)
    	{print ;
    	chomp;
    		s/- *$//g;
    		print G;
    	}
    close (F); 
    close (G);
    Certes, il enlève tous les tirets en fin de ligne, mais en fait, il enlève surtout tous les retours \n. Comment puis-je faire pour qu'il change uniquement:
    par:
    ?

    J'espère avoir énoncé ma question clairement.
    Merci d'avance pour votre aide.

    Celano

  2. #2
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour,

    Si OCR me donne :
    - Le week-end la quanti-
    té de confiture est doublée.
    - En semaine elle est de 50g.
    un.pl vite fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    open (IN_Fic, '<', "temp.txt") or die "Erreur sur ouverture fichier temp.txt \n";
    open (OUT_Fic, '>', "resu.txt") or die "Erreur sur ouverture fichier resu.txt \n";
     
    while ( my $Lig = <IN_Fic> ){
    	$Lig =~ s/-\n$//;
    	print OUT_Fic $Lig;
    }
     
    close (IN_Fic); 
    close (OUT_Fic);
    Donne :
    - Le week-end la quantité de confiture est doublée.
    - En semaine elle est de 50g.
    Est-ce que ça te convient ?

  3. #3
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Je pense que ça n'est pas bon parce que la demande spécifie qu'il faut remettre un retour à la ligne.

    Il serait plus facile d'ajouter le retour à la ligne avant le mot coupé qu'après.
    C'est à dire remplacer


    par
    Est-ce que ça conviendrait?

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 398
    Points : 193
    Points
    193
    Par défaut
    Oui, la deuxième solution serait l'idéal.
    Mais la première est déjà très bien.


    Du coup, dans le deuxième exemple, il faudrait faire quoi?

    Celano

    PS: pour le moment, je ne comprends pas très bien les codes que vous me donnez, mais c'est un bon support pour aller chercher dans la doc et apprendre un peu du langage Merci

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    En fait, en écrivant la solution, je me suis rendu compte qu'il était aussi facile de le faire après le mot coupé qu'avant.

    Exemples sous la forme de scripts unilignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ perl -e '$c = "quanti-\nte"; $c =~ s/\b(\w+)-\n(\w+)\b/\n$1$2/g; print $c;'
     
    quantite
    HP ~
    $ perl -e '$c = "quanti-\nte"; $c =~ s/\b(\w+)-\n(\w+)\b/$1$2\n/g; print $c;'
    quantite
     
    HP ~

Discussions similaires

  1. [CSS 3] Effet CSS automatique en fin de ligne pour titre h1
    Par Dsphinx dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 25/07/2013, 16h12
  2. Supprimer le tiret de coupure des mots en fin de ligne
    Par Dagnan dans le forum Mise en forme
    Réponses: 1
    Dernier message: 09/05/2007, 02h13
  3. Enlevé CR LF en fin de ligne
    Par AODRENN dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 03/05/2007, 22h48
  4. "const" en fin de ligne pour une fonction
    Par 30barrett40 dans le forum C++
    Réponses: 5
    Dernier message: 07/03/2007, 07h46
  5. Réponses: 1
    Dernier message: 14/09/2006, 12h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo