Grammalecte  Diff

Differences From Artifact [1c96ea4c7d]:

To Artifact [aa0d177807]:


406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
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.








|







406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
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.

460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
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.
#
#


!!!
!!!







|







460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
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.
#
#


!!!
!!!
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
!!!! 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









|

|












>







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
!!!! 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


1370
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
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

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 ?

TEST: __ocr__ des verres luisent sur {{i}} le bureau blanc.
TEST: __ocr__ la voix, {{e}} est celle de…
TEST: __ocr__ ressemble {{h}} une fenêtre de serre.
TEST: __ocr__ Ça a duré 3 h.
TEST: __ocr__ c’est alors que je suis fort.


## 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 ?








|






>
>
>
>
>
>
>
>
>
>
>




















>
>
>
>



>
>




|








>



|



>



|



>







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
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
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461

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 ?

TEST: __ocr__ des verres luisent sur {{i}} le bureau blanc.
TEST: __ocr__ la voix, {{e}} est celle de…
TEST: __ocr__ ressemble {{h}} une fenêtre de serre.
TEST: __ocr__ Ça a duré 3 h.
TEST: __ocr__ c’est alors que je suis fort.


## 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 ?

2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
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__







|







2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
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__
2522
2523
2524
2525
2526
2527
2528








2529
2530
2531
2532
2533
2534
2535
# 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







>
>
>
>
>
>
>
>







2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
# 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
2926
2927
2928
2929
2930
2931
2932








2933
2934
2935
2936
2937
2938
2939

    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.







>
>
>
>
>
>
>
>







2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976

    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.
3395
3396
3397
3398
3399
3400
3401



3402
3403
3404
3405
3406
3407
3408

    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







>
>
>







3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448

    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