Grammalecte  Check-in [6a57dc4970]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:[fr] nr: ocr, +ajustements
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256:6a57dc497057999a3231a1fe35c6a4a7a73fac50db914b401081cf613e07f9f1
User & Date: olr 2019-05-14 09:10:43
Context
2019-05-14
10:02
[fr] nr: conf verbe/ppas, +ajustements check-in: 7424c98a5b user: olr tags: fr, trunk
09:10
[fr] nr: ocr, +ajustements check-in: 6a57dc4970 user: olr tags: fr, trunk
07:10
[fr] ajustement check-in: 90805bb084 user: olr tags: fr, trunk
Changes

Changes to gc_lang/fr/rules.grx.

406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
...
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
...
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882

883
884
885
886
887
888
889
....
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383











1384
1385
1386
1387
1388
1389
1390
....
1397
1398
1399
1400
1401
1402
1403




1404
1405
1406


1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419

1420
1421
1422
1423
1424
1425
1426

1427
1428
1429
1430
1431
1432
1433

1434
1435
1436
1437
1438
1439
1440
....
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
....
2522
2523
2524
2525
2526
2527
2528








2529
2530
2531
2532
2533
2534
2535
....
2926
2927
2928
2929
2930
2931
2932








2933
2934
2935
2936
2937
2938
2939
....
3395
3396
3397
3398
3399
3400
3401



3402
3403
3404
3405
3406
3407
3408
TEST: {{( }}parenthèses)                                                  ->> (
TEST: c’est (enfin{{ )}} parti.
TEST: voici des (parenthèses{{ )}}, n’est-ce pas ?                        ->> )


# Parenthèses collées
__<s>/typo(typo_parenthèse_fermante_collée)__
    [)]\b(?![s¹²³⁴⁵⁶⁷⁸⁹⁰]\b) <<- not before("\\([rR]e$") ->> ") "                                   # Il manque un espace après la parenthèse.
__<s>/typo(typo_parenthèse_ouvrante_collée)__
    \b[(](?=[^)][^)][^)]) <<- ->> " ("                                                              # Il manque un espace avant la parenthèse.

TEST: C’est au fond du couloir{{(}}celui du deuxième étage{{)}}qu’il se trouve.
TEST: (a + b)²
TEST: il faut (re)former tout ça.

................................................................................
TEST: Vos {{“}}amis{{“ }}et vous êtes finis !



#
#
# NOTE
# Tout contrôle des espaces doit se faire avant ce point.
# À partir d’ici, toute règle est susceptible de supprimer des caractères et les remplacer par des espaces ou des chaînes de longueur égale.
#
#


!!!
!!!
................................................................................
!!!! Espaces manquants                                                                            !!
!!
!!

__<s>/typo(typo_espace_manquant_après1)__
    ({w1})[,:]({w_1})  @@0,$  <<- not \1.isdigit() -2>> " \2"                                       # Il manque un espace.
__<s>/typo(typo_espace_manquant_après2)__
    [?!;%‰‱˚»}]({w_1})  @@$  <<- -1>> " \1"                                                       # Il manque un espace.
__<s]/typo(typo_espace_manquant_après3)__
    {w_1}[.]({w_1})  @@$
    <<- (\1.__len__() > 1 and not \1[0:1].isdigit() and spell(\1)) or after("^’") -1>> " \1"        # Il manque un espace.

TEST: J’en ai marre,{{ça}} suffit.
TEST: elle est délirante.{{Devine}} ce qu’elle a dit.
TEST: Voilà,{{il}} manque un espace.                                        ->> " il"
TEST: Dernier essai.{{Voilà}}, c’est ça.                                    ->> " Voilà"
TEST: muni de lunettes protectrices et.{{d}}’un casque.
TEST: espace:{{manquant}}                                                   ->> " manquant"
TEST: espace{{;}}{{manquant}}
TEST: espace ;{{manquant}}                                                  ->> " manquant"
TEST: espace{{?}}{{manquant}}
TEST: espace{{!}}{{manquant}}

TEST: espace.{{Manquant}}                                                   ->> " Manquant"
TEST: C’est bien.{{Les}} invités seront contents.                           ->> " Les"
TEST: qui ont refusé.{{de}} se sauver                                       ->> " de"
TEST: Y parvenir quoi qu’il en soit.{{Le}} sort en est jeté.                ->> " Le"
TEST: pic.twitter.com/PICNAME


................................................................................

TEST: __ocr__ {{II}} pleut tout le temps.
TEST: __ocr__ En l’an {{2OO1}}, tout commença.


## Casse
__[s]/ocr(ocr_casse_pronom_vconj)__
    {w2}-(On|Ils?|Elles?|Tu|Je|Nous|Vous|Mêmes?|Ci|Là|Une?s) @@$
    <<- -1>> =\1.lower()                                                                            # Erreur de numérisation ? Casse douteuse.

TEST: __ocr__ Part-{{On}} demain ?
TEST: __ocr__ À ce compte-{{Ci}}, on n’en viendra jamais à bout.
TEST: __ocr__ Quelques-{{Uns}} sont incapables d’y parvenir.













## Lettres isolées
# Note: l’option “mapos” cherche les apostrophes manquantes après les lettres l, d, n, m, t, s, j, c, ç
__[s]/ocr(ocr_lettres_isolées)!2__
    \w(?!’)
    <<- not re.search("[0-9aàAÀyYdlnmtsjcçDLNMTSJCÇ_]", \0) and not before("\\d[   ]+$") and not (\0.isupper() and after0(r"^\."))
    ->> _           # Lettre isolée : erreur de numérisation ?
................................................................................


## Caractères rares
__<s>/ocr(ocr_caractères_rares)__
    \w*[{}<>&*#£]+\w*
    <<- \0 != "<" and \0 != ">" ->> _                                                               # Erreur de numérisation ? Cette chaîne contient un caractère de fréquence rare.





TEST: __ocr__ trouve {{l£}} temps
TEST: __ocr__ elle s’{{avance*}} sur le seuil
TEST: __ocr__ par beaucoup d’argent ? {{{Il}} débouche le Jack Daniels




## Mélange chiffres/lettres
__[i]/ocr(ocr_le_la_les_regex)__
    1[easrnxiocuwàéè]
        <<- \0.endswith("e") ->> le                                                                 # Erreur de numérisation ?
        <<- __else__ and \0.endswith("a") ->> la                                                    # Erreur de numérisation ?
        <<- __else__ and \0.endswith("à") ->> la|là                                                 # Erreur de numérisation ?
        <<- __else__ ->> le|la                                                                      # Erreur de numérisation ?

TEST: __ocr__ avec {{1e}} chien du policier
TEST: __ocr__ il le jura sur {{1a}} tête de sa mère
TEST: __ocr__ {{1c}} chat du voinsin est idiot



__[i]/ocr(ocr_les)__
    1[ea]s
        <<- ->> les                                                                                 # Erreur de numérisation ?

TEST: __ocr__ {{1es}} jours clairs



__[i]/ocr(ocr_l_regex)__
    (1’)[aâeéèêëiîïoôuyh][\w-]*  @@0
        <<- -1>> l’|L’|j’|J’                                                                        # Erreur de numérisation ?

TEST: __ocr__ {{1’}}année s’annonce agitée.



__[i]/ocr(ocr_il_regex)__
    1fs?
        <<- \0.endswith("s") ->> Ils|ils|ifs                                                        # Erreur de numérisation ?
        <<- __else__ ->> Il|il|if                                                                   # Erreur de numérisation ?

................................................................................
TEST: __ocr__ s’habituer à se faire servir, {{Au}} début ça                     ->> au
TEST: __ocr__ Tu as tué ce petit garçon, Henri, {{Et}} tu le sais.              ->> et
TEST: __ocr__ d’un fil de plastique transparent, {{Il}} l’agite                 ->> il
TEST: __ocr__ sur une glace noire {{Les}} lumières du port                      ->> les
TEST: __ocr__ le roulis du bateau {{Le}} faisant heurter                        ->> le
TEST: __ocr__ si vous {{La}} désirez                                            ->> la
TEST: __ocr__ sa main se referme sur {{Je}} livre                               ->> je
TEST: __ocr__ Ils étaient portés à croire que Danton et Robespierre ne mettraient aucun obstacle. Le 8 au soir, Robespierre était allé à la section Bonne-Nouvelle, avait invectivé violemment contre la Gironde. Pendant son discours, un des siens, qui l’attendait à la porte, disait qu’on devrait massacrer non les Girondins seulement, mais tous les signataires des fameuses pétitions.
TEST: __ocr__ Prends cette pelle et creuse.
TEST: __ocr__ Roland, 87 ans, amoureux depuis cinq ans : « J’ai l’impression que je vais vivre encore longtemps »
TEST: __ocr__ QUE FAIRE D’APRÈS EUX ?


# virgules
__ocr_virgules__
................................................................................
# fille / tille
__ocr_fille__
    tille
        <<- ->> fille                                                                               # Erreur de numérisation ?

TEST: __ocr__ Cette {{tille}} n’en avait jamais assez.










# fut / rut
__ocr_fut__
    rut
        <<- ->> fut                                                                                 # Erreur de numérisation ?

TEST: __ocr__ ce petit {{rut}} traité comme un chien
................................................................................

    vine
        <<- ->> une                                                                                 # Erreur de numérisation ?

TEST: __ocr__ il avait {{ure}} femme élégante et silencieuse
TEST: __ocr__ c’est pour {{vine}} amie










# vous / voua / voue
__ocr_vous__
    [voue|voua]
        <<- ->> vous                                                                                # Erreur de numérisation ?

TEST: __ocr__ avec {{voue}}, je n’ai pas confiance.
................................................................................

    avant hier
        <<- /tu/ ->> avant-hier                                 # Il manque un trait d’union.

    [basket|volley] ball
        <<- /tu/ ->> \1-ball                                    # Il manque un trait d’union.




    [les|des|aux] beaux arts
        <<- /tu/ -2:3>> beaux-arts                              # Il manque un trait d’union.

    bouche à [bouche|>oreille]
        <<- /tu/ morph(<1, ":D") ->> \1-\2-\3                   # Il manque les traits d’union.

    c’ est [à|a] dire







|







 







|







 







|

|












>







 







|






>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>



>
>




|








>



|



>



|



>







 







|







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>







406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
...
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
...
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
....
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
....
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
....
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
....
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
....
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
....
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
TEST: {{( }}parenthèses)                                                  ->> (
TEST: c’est (enfin{{ )}} parti.
TEST: voici des (parenthèses{{ )}}, n’est-ce pas ?                        ->> )


# Parenthèses collées
__<s>/typo(typo_parenthèse_fermante_collée)__
    [)]\b(?![s¹²³⁴⁵⁶⁷⁸⁹⁰]\b) <<- not before("\\([rR][eéEÉ]$") ->> ") "                              # Il manque un espace après la parenthèse.
__<s>/typo(typo_parenthèse_ouvrante_collée)__
    \b[(](?=[^)][^)][^)]) <<- ->> " ("                                                              # Il manque un espace avant la parenthèse.

TEST: C’est au fond du couloir{{(}}celui du deuxième étage{{)}}qu’il se trouve.
TEST: (a + b)²
TEST: il faut (re)former tout ça.

................................................................................
TEST: Vos {{“}}amis{{“ }}et vous êtes finis !



#
#
# NOTE
# Tout contrôle des espaces existants doit se faire avant ce point.
# À partir d’ici, toute règle est susceptible de supprimer des caractères et les remplacer par des espaces ou des chaînes de longueur égale.
#
#


!!!
!!!
................................................................................
!!!! Espaces manquants                                                                            !!
!!
!!

__<s>/typo(typo_espace_manquant_après1)__
    ({w1})[,:]({w_1})  @@0,$  <<- not \1.isdigit() -2>> " \2"                                       # Il manque un espace.
__<s>/typo(typo_espace_manquant_après2)__
    [?!;%‰‱˚»}]({w_1}|[({[])  @@$  <<- -1>> " \1"                                                 # Il manque un espace.
__<s]/typo(typo_espace_manquant_après3)__
    {w_1}[.]({w_1}|[({[])  @@$
    <<- (\1.__len__() > 1 and not \1[0:1].isdigit() and spell(\1)) or after("^’") -1>> " \1"        # Il manque un espace.

TEST: J’en ai marre,{{ça}} suffit.
TEST: elle est délirante.{{Devine}} ce qu’elle a dit.
TEST: Voilà,{{il}} manque un espace.                                        ->> " il"
TEST: Dernier essai.{{Voilà}}, c’est ça.                                    ->> " Voilà"
TEST: muni de lunettes protectrices et.{{d}}’un casque.
TEST: espace:{{manquant}}                                                   ->> " manquant"
TEST: espace{{;}}{{manquant}}
TEST: espace ;{{manquant}}                                                  ->> " manquant"
TEST: espace{{?}}{{manquant}}
TEST: espace{{!}}{{manquant}}
TEST: une espace ?{{(}}oui ou non)
TEST: espace.{{Manquant}}                                                   ->> " Manquant"
TEST: C’est bien.{{Les}} invités seront contents.                           ->> " Les"
TEST: qui ont refusé.{{de}} se sauver                                       ->> " de"
TEST: Y parvenir quoi qu’il en soit.{{Le}} sort en est jeté.                ->> " Le"
TEST: pic.twitter.com/PICNAME


................................................................................

TEST: __ocr__ {{II}} pleut tout le temps.
TEST: __ocr__ En l’an {{2OO1}}, tout commença.


## Casse
__[s]/ocr(ocr_casse_pronom_vconj)__
    {w2}-(On|Ils?|Elles?|Tu|Je|Nous|Vous|Mêmes?|Ci|Là|Une?s|Les?|La|Leur) @@$
    <<- -1>> =\1.lower()                                                                            # Erreur de numérisation ? Casse douteuse.

TEST: __ocr__ Part-{{On}} demain ?
TEST: __ocr__ À ce compte-{{Ci}}, on n’en viendra jamais à bout.
TEST: __ocr__ Quelques-{{Uns}} sont incapables d’y parvenir.


## Mots inconnus du dictionnaire
__[s]/ocr(mots_composés_inconnus)__
    \w+-\w+
        <<- not spell(\0) and not re.search("(?i)-(?:je|tu|on|nous|vous|ils?|elles?|là|ci|les?|la|leur|une?s)$", \0)
        ->> _                                                                                       # Erreur de numérisation ? Mot composé inconnu du dictionnaire.

TEST: __ocr__ c’est du {{base-bal}}]
TEST: __ocr__ cet homme-là est corrompu.
TEST: __ocr__ cette femme-là est revenue nous dire ce qu’elle pensait de nous.


## Lettres isolées
# Note: l’option “mapos” cherche les apostrophes manquantes après les lettres l, d, n, m, t, s, j, c, ç
__[s]/ocr(ocr_lettres_isolées)!2__
    \w(?!’)
    <<- not re.search("[0-9aàAÀyYdlnmtsjcçDLNMTSJCÇ_]", \0) and not before("\\d[   ]+$") and not (\0.isupper() and after0(r"^\."))
    ->> _           # Lettre isolée : erreur de numérisation ?
................................................................................


## Caractères rares
__<s>/ocr(ocr_caractères_rares)__
    \w*[{}<>&*#£]+\w*
    <<- \0 != "<" and \0 != ">" ->> _                                                               # Erreur de numérisation ? Cette chaîne contient un caractère de fréquence rare.

__<s>/ocr(ocr_doublons_caractères_rares)__
    [\]\[({}][\]\[({}]+
        <<- ->> _                                                                                   # Erreur de numérisation ? Succession douteuse de caractères.

TEST: __ocr__ trouve {{l£}} temps
TEST: __ocr__ elle s’{{avance*}} sur le seuil
TEST: __ocr__ par beaucoup d’argent ? {{{Il}} débouche le Jack Daniels
TEST: __ocr__ {{[[}}voyons celà].
TEST: __ocr__ {{((}}voyons ceci).


## Mélange chiffres/lettres
__[i]/ocr(ocr_le_la_les_regex)__
    [1[][easrnxiocuwàéè]
        <<- \0.endswith("e") ->> le                                                                 # Erreur de numérisation ?
        <<- __else__ and \0.endswith("a") ->> la                                                    # Erreur de numérisation ?
        <<- __else__ and \0.endswith("à") ->> la|là                                                 # Erreur de numérisation ?
        <<- __else__ ->> le|la                                                                      # Erreur de numérisation ?

TEST: __ocr__ avec {{1e}} chien du policier
TEST: __ocr__ il le jura sur {{1a}} tête de sa mère
TEST: __ocr__ {{1c}} chat du voinsin est idiot
TEST: __ocr__ {{[e}} chien a faim


__[i]/ocr(ocr_les)__
    [1[][ea]s
        <<- ->> les                                                                                 # Erreur de numérisation ?

TEST: __ocr__ {{1es}} jours clairs
TEST: __ocr__ {{[as}} amis sont présents


__[i]/ocr(ocr_l_regex)__
    ([1[][’'`‘])[aâeéèêëiîïoôuyh][\w-]*  @@0
        <<- -1>> l’|L’|j’|J’                                                                        # Erreur de numérisation ?

TEST: __ocr__ {{1’}}année s’annonce agitée.
TEST: __ocr__ {{['}}ouverture du championnat est pour bientôt.


__[i]/ocr(ocr_il_regex)__
    1fs?
        <<- \0.endswith("s") ->> Ils|ils|ifs                                                        # Erreur de numérisation ?
        <<- __else__ ->> Il|il|if                                                                   # Erreur de numérisation ?

................................................................................
TEST: __ocr__ s’habituer à se faire servir, {{Au}} début ça                     ->> au
TEST: __ocr__ Tu as tué ce petit garçon, Henri, {{Et}} tu le sais.              ->> et
TEST: __ocr__ d’un fil de plastique transparent, {{Il}} l’agite                 ->> il
TEST: __ocr__ sur une glace noire {{Les}} lumières du port                      ->> les
TEST: __ocr__ le roulis du bateau {{Le}} faisant heurter                        ->> le
TEST: __ocr__ si vous {{La}} désirez                                            ->> la
TEST: __ocr__ sa main se referme sur {{Je}} livre                               ->> je
TEST: __ocr__ Ils étaient portés à croire que Danton et Robespierre ne mettraient aucun obstacle. Le 8 au soir, Robespierre était allé à la section {{Bonne-Nouvelle}}, avait invectivé violemment contre la Gironde. Pendant son discours, un des siens, qui l’attendait à la porte, disait qu’on devrait massacrer non les Girondins seulement, mais tous les signataires des fameuses pétitions.
TEST: __ocr__ Prends cette pelle et creuse.
TEST: __ocr__ Roland, 87 ans, amoureux depuis cinq ans : « J’ai l’impression que je vais vivre encore longtemps »
TEST: __ocr__ QUE FAIRE D’APRÈS EUX ?


# virgules
__ocr_virgules__
................................................................................
# fille / tille
__ocr_fille__
    tille
        <<- ->> fille                                                                               # Erreur de numérisation ?

TEST: __ocr__ Cette {{tille}} n’en avait jamais assez.


# fout / font
__ocr_font__
    fout
        <<- not value(<1, "|il|elle|on|") and not value(<2, "|il|elle|on|") ->> font                # Erreur de numérisation ?

TEST: __ocr__ qui ne {{fout}} rien de leur journée


# fut / rut
__ocr_fut__
    rut
        <<- ->> fut                                                                                 # Erreur de numérisation ?

TEST: __ocr__ ce petit {{rut}} traité comme un chien
................................................................................

    vine
        <<- ->> une                                                                                 # Erreur de numérisation ?

TEST: __ocr__ il avait {{ure}} femme élégante et silencieuse
TEST: __ocr__ c’est pour {{vine}} amie


# vêtement / vêlement
__ocr_vêtement__
    >vêlement
        <<- ->> =\1.replace("l", "t").replace("L", "T")                                             # Erreur de numérisation ?

TEST: __ocr__ il enfila ses {{vêlements}} en hâte.


# vous / voua / voue
__ocr_vous__
    [voue|voua]
        <<- ->> vous                                                                                # Erreur de numérisation ?

TEST: __ocr__ avec {{voue}}, je n’ai pas confiance.
................................................................................

    avant hier
        <<- /tu/ ->> avant-hier                                 # Il manque un trait d’union.

    [basket|volley] ball
        <<- /tu/ ->> \1-ball                                    # Il manque un trait d’union.

    bas [>côté|coté|cotés]
        <<- morph(<1 , ":D") ->> bas-côté|bas-côtés             # Il manque un trait d’union.

    [les|des|aux] beaux arts
        <<- /tu/ -2:3>> beaux-arts                              # Il manque un trait d’union.

    bouche à [bouche|>oreille]
        <<- /tu/ morph(<1, ":D") ->> \1-\2-\3                   # Il manque les traits d’union.

    c’ est [à|a] dire