Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -1250,10 +1250,663 @@ TEST: __redon1__ Tu es son {{avenir}}. Et lui aussi est ton {{avenir}}. TEST: __redon1__ Car parfois il y en a. Mais parfois il n’y en a pas. +!! +!! +!!!! OCR !! +!! +!! + +# ? +__> " ?" # Erreur de numérisation ? + +TEST: __ocr__ des chiffrements{{ 7}} Paul n’en sait rien. +TEST: __ocr__ veux-tu en parler{{ 7}} + + +# virgules +__[s>/ocr(ocr_virgules)__ + (?:[iI]l|l(?:es?|a)|[dnmtsDNMTS]e|[àÀ]|[cC]e(?:te|t|)|[mM](?:on|a)|[TS]a|[qQ]uelques?|[aA]ux?), + <<- not /0.endswith("…") ->> =\0[:-1] # Erreur de numérisation ? Virgule superflue ? + +TEST: __ocr__ Pierre entre pour {{se,}} rapprocher de L +TEST: __ocr__ je voudrais faire une question ou deux sur une maison de ce village, la… comment l’appelle-t-on ? + + +# Nombres +__[s]/ocr(ocr_nombres)__ + [\dOI][\dOI]+ + <<- \0 == "II" ->> 11|Il # Erreur de numérisation ? + <<- __else__ and not \0.isdigit() ->> =\0.replace("O", "0").replace("I", "1") # Erreur de numérisation ? + +TEST: __ocr__ {{II}} pleut tout le temps. +TEST: __ocr__ En l’an {{2OO1}}, tout commença. + + +# âge / age +__[i]/ocr(ocr_age)__ ages? <<- ->> =\0.replace("a", "â").replace("A", "Â") # Erreur de numérisation ? + +TEST: __ocr__ À son {{age}}, on ne sait plus ce qu’on fait. + + +# autre / antre +__[i]/ocr(ocr_autre)__ antres? <<- ->> =\0.replace("n", "u") # Erreur de numérisation ? + +TEST: __ocr__ cet {{antre}} gars lui semblait bien louche. + + +# avec / aven / arec +__[i]/ocr(ocr_avec)__ a(?:rec|ven) <<- ->> avec # Erreur de numérisation ? + +TEST: __ocr__ Elle s’en alla {{arec}} eux sans un regard en arrière. + +# avaient / avalent +__[i]/ocr(ocr_avaient)__ avalent <<- ->> avaient # Erreur de numérisation ? + +TEST: __ocr__ Ils {{avalent}} très faim. + + +# avais / avals / axais +__[i]/ocr(ocr_avis)__ a(?:val|xai)s <<- ->> avais # Erreur de numérisation ? + +TEST: __ocr__ j’{{axais}} souvent perdu le contrôle de moi-même, mais jamais à ce point + + +# car dans / cardans +__[i]/ocr(ocr_car_dans)__ cardans <<- ->> car dans # Erreur de numérisation ? + +TEST: __ocr__ On se tut tous, {{cardans}} l’armée on apprend à la boucler. + + +# chère / obère +__[i]/ocr(ocr_chère)__ obère <<- not before(r"(?i)\b([jnlmts]’|il |on |elle )$") ->> chère # Erreur de numérisation ? + +TEST: __ocr__ cette femme {{obère}} à notre cœur. + + +# celui / celai +__[i]/ocr(ocr_celui)__ celai <<- not before(r"(?i)\b[jn]e +$") ->> celui # Erreur de numérisation ? + +TEST: __ocr__ je suis déjà venu et {{celai}} qui viendra encore. + + +# ces / cos +__[i]/ocr(ocr_ces)__ cos <<- ->> ces # Erreur de numérisation ? + +TEST: __ocr__ {{cos}} problèmes sont insolubles. + + +# C’était / Celait +__[i]/ocr(ocr_c_était)__ celait <<- ->> c’était # Erreur de numérisation ? + +TEST: __ocr__ {{celait}} perdu d’avance. + + +# cette / celte +__[i]/ocr(ocr_cette1)__ (cel[tl]e) ({w_2}) @@0,$ <<- morph(\2, ":N.*:f:s", False) -1>> cette # Erreur de numérisation ? + +TEST: __ocr__ mais {{celte}} femme semblait savoir ce qu’elle faisait. +TEST: __ocr__ avec {{celle}} tentative d’humour, il pensait nous faire rire. + + +# cette / cotte +__[i]/ocr(ocr_cette2)__ cotte <<- not morph(word(-1), ":D.*:f:[si]") ->> cette # Erreur de numérisation ? + +TEST: __ocr__ on poirautait, {{cotte}} mariée n’arrivait pas à se décider. + + +# Comme / Gomme +__[s]/ocr(ocr_comme)__ Gomme <<- not morph(word(1), ">(?:et|o[uù])/") ->> Comme # Erreur de numérisation ? + +TEST: __ocr__ {{Gomme}} il était sage à cette époque-là ! + + +# Comment / Gomment +__[s]/ocr(ocr_comment)__ Gomment <<- ->> Comment # Erreur de numérisation ? + +TEST: __ocr__ {{Gomment}} s’en sortir avec tous ces retards qui s’accumulent ? + + +# contre / coutre / contra +__[i]/ocr(ocr_contre)__ co[un]tr[ea] <<- not re.search("(?i)^contre$", \0) ->> contre # Erreur de numérisation ? + +TEST: __ocr__ elle était {{coutre}} cette idée et le serait toujours. + + +# de / da +__[i]/ocr(ocr_de)__ da <<- ->> de # Erreur de numérisation ? + +TEST: __ocr__ Le nombre {{da}} personnes endettées augmente sans cesse. + + +# dans / bans / clans +__[i]/ocr(ocr_dans1)__ bans <<- not morph(word(-1), ":D.*:p", False, False) ->> dans # Erreur de numérisation ? +__[s]/ocr(ocr_dans2)__ + (clans) (?:les?|la|ce(?:tte|t|s|)|des?|[mts](?:on|a|es)|leurs?|[nv]os|cha(?:que|cun)|tou(?:tes?|s|t)) @@0 + <<- not morph(word(-1), ":D.*:p", False, False) -1>> dans # Erreur de numérisation ? + +TEST: __ocr__ Mais {{bans}} cette ferme, tout était bien organisé. +TEST: __ocr__ sache que, {{clans}} cette ferme, on ne fait que du bio. + + +# dame / darne +__[i]/ocr(ocr_dame)__ + darnes + <<- ->> =\0.replace("rn", "m") # Erreur de numérisation ? + +TEST: __ocr__ ces {{darnes}} arrivèrent avec dix minutes d’avance. + + +# dé / de / dés / des / dès +__[i]/ocr(ocr_de_des1)__ + dés? + <<- \0.endswith("é") and not morph(word(-1), ":D.*:m:[si]", False, False) ->> de # Erreur de numérisation ? + <<- \0.endswith("s") and not morph(word(-1), ":D.*:m:p", False, False) ->> des|dès # Erreur de numérisation ? + +TEST: __ocr__ {{dés}} fois, ça ne passe pas +TEST: __ocr__ {{dé}} gros camions circulaient toute la journée + + +# de / dos +__[i]/ocr(ocr_de_des2)__ + dos? + <<- \0.endswith("o") ->> de # Erreur de numérisation ? + <<- __else__ and not morph(word(-1), ":D.*:[me]", False, False) ->> des|dès # Erreur de numérisation ? + +TEST: __ocr__ {{dos}} camions cabossés à n’en plus finir + + +# de la / delà +__[i]/ocr(ocr_de_la)__ delà <<- not before(r"(?i)\bau ") ->> de la|de là # Erreur de numérisation ? + +TEST: __ocr__ la peinture {{delà}} maison s’écaillait + + +# doute / cloute +__[i]/ocr(ocr_doute)__ cloute <<- ->> doute # Erreur de numérisation ? + +TEST: __ocr__ Sans aucun {{cloute}}. + + +# du / dû +__[i]/ocr(ocr_du)__ + (dû) +({w_3}) @@0,$ + <<- morph(\2, ":[NA]:[me]:[si]", ":Y") -1>> du # Erreur de numérisation ? + +TEST: __ocr__ prendre {{dû}} bon temps +TEST: __ocr__ Tous eussent dû subir ce supplice raffiné. + + +# elle / elfe +__[s]/ocr(ocr_elle)__ + [eE]lfes? + <<- \0.endswith("e") and ( morph(word(-1), ":R", False, True) or isNextVerb() ) ->> elle # Erreur de numérisation ? + <<- \0.endswith("s") and ( morph(word(-1), ":R", False, True) or isNextVerb() ) ->> elles # Erreur de numérisation ? + +TEST: __ocr__ {{Elfes}} s’ennuyaient à mourir. + + +# est / ost +__[i]/ocr(ocr_est)__ ost <<- ->> est # Erreur de numérisation ? + +TEST: __ocr__ Le cheval {{ost}} attaché. + + +# et / cl +__[i]/ocr(ocr_et)__ [cE][l1] <<- not before("[0-9] +$") ->> et # Erreur de numérisation ? + +TEST: __ocr__ elle {{cl}} lui, c’était pour la vie. +TEST: __ocr__ {{El}} il faisait froid là-haut + + +# état / étal +__[i]/ocr(ocr_état)__ + étals? + <<- \0.endswith("l") ->> état # Erreur de numérisation ? + <<- __else__ ->> étais|états # Erreur de numérisation ? + +TEST: __ocr__ Quels {{étals}} sont venus ? + + +# étaient / étalent +__[i]/ocr(ocr_étaient)__ étalent <<- ->> étaient # Erreur de numérisation ? + +TEST: __ocr__ Ce qu’ils {{étalent}} vraiment, nul ne le savait. + + +# fille / tille +__[i]/ocr(ocr_fille)__ tille <<- ->> fille # Erreur de numérisation ? + +TEST: __ocr__ Cette {{tille}} n’en avait jamais assez. + + +# fut / rut +__[i]/ocr(ocr_fut)__ rut <<- ->> fut # Erreur de numérisation ? + +TEST: __ocr__ ce petit {{rut}} traité comme un chien + +# il / n +__[s]/ocr(ocr_il)__ + (n )([bcdfghjklmnpqrstvwxz][\w-]+) @@0,$ + <<- isStart() and morph(\2, ":(?:O[on]|3s)", False) -1>> "il " # Erreur de numérisation ? + +TEST: __ocr__ {{n }}contient trop de soufre. + + +# il / ils / U / Us +__[s]/ocr(ocr_il_ils2)__ + Us? + <<- \0.endswith("s") ->> Ils|ils # Erreur de numérisation ? + <<- __else__ ->> Il|il # Erreur de numérisation ? + +TEST: __ocr__ {{Us}} arrive demain. + + +# il / i1 / if / 11 +__[s]/ocr(ocr_il_ils3)__ + [iI1][1f]s? + <<- not \0.endswith("s") ->> Il|il # Erreur de numérisation ? + <<- __else__ ->> Ils|ils # Erreur de numérisation ? + +TEST: __ocr__ {{i1s}} en savent beaucoup trop pour leur propre bien. + + +# fa / la +__[i]/ocr(ocr_la)__ fa <<- ->> la # Erreur de numérisation ? + +TEST: __ocr__ dans {{fa}} demeure + + +# large / largo +__[i]/ocr(ocr_large)__ largos? <<- ->> =\0.replace("o", "e") # Erreur de numérisation ? + +TEST: __ocr__ elle pense {{largo}} + + +# l’ / j’ / Y / I +__[s]/ocr(ocr_lj1)__ + (Y[ ’'])([aâeéèêëiîïoôuy][\w-]+) @@0,2 + <<- before(r"(?i)\w") or not morph(\2, ":Y", False) -1>> l’|L’|j’|J’ # Erreur de numérisation ? +__[s]/ocr(ocr_lj2)__ + ([Ii1][ ’'])([aâeéèêëiîïoôuy][\w-]+) @@0,2 + <<- -1>> l’|L’|j’|J’ # Erreur de numérisation ? + +TEST: __ocr__ {{Y’}}arrive demain. +TEST: __ocr__ {{I’}}arrive demain. + + +# ! +__> " !" # Erreur de numérisation ? +__> " !" # Erreur de numérisation ? + +TEST: __ocr__ Oh{{ I}} c’est pas formidable ? +TEST: __ocr__ Vraiment{{ 1}} Paul n’en savait rien. +TEST: __ocr__ Ça prendra 1 h. +TEST: __ocr__ Valeur : 1 KHz. + + +# l’ / V / P +__[s]/ocr(ocr_lv)__ + V({w_2}) @@1 + <<- \0.istitle() and before(r"(?i)\w") and morphex(\0, ":", ":M") >>> + <<- spell(\1) ->> v\1|l’\1 # Erreur de numérisation ? + <<- __else__ ->> v\1 # Erreur de numérisation ? +__[s]/ocr(ocr_lp)__ + P([aâeéêèiîïoôuy]{w_1}) @@1 + <<- before(r"(?i)\w") and morphex(\0, ":", ":M") and spell(\1) ->> l’\1|p\1 # Erreur de numérisation ? + +TEST: __ocr__ beaucoup de {{Vélos}} à Versailles. +TEST: __ocr__ avec {{Vagile}} méthode de notre amie Virginie, tout est possible. +TEST: __ocr__ Viens demain. +TEST: __ocr__ Ce jour où Valérie eut sa licence de droit. +TEST: __ocr__ Il scrute Pierre, {{Pair}} maussade. +TEST: __ocr__ Une grosse vague arrivait et {{Peau}} remplit. +TEST: __ocr__ selon toute logique, Paris sera épargné. + + +# l’était / Tétait +__[s]/ocr(ocr_l_était)__ + Tétait + <<- before(r"(?i)\w") ->> l’était # Erreur de numérisation ? + +TEST: __ocr__ perdu, cet homme {{Tétait}} + + +# le les / lé / lés +__[i]/ocr(ocr_le_les)__ + lés? + <<- ->> =\0.replace("é", "e").replace("É", "E") # Erreur de numérisation ? + +TEST: __ocr__ il s’agit de {{lés}} observer. + + +__[i]/ocr(ocr_le_la)__ + 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 + + +# les / lai / lei +__[i]/ocr(ocr_lui_les)__ l[ae]i <<- ->> lui|les # Erreur de numérisation ? + +TEST: __ocr__ {{lai}} gros sont mal vus. + + +# le / la / tu / lu +__[s]/ocr(ocr_tu_le_la)__ lu <<- not morph(word(-1), ":(?:V0|N.*:m:[si])", False, False) ->> tu|le|la # Erreur de numérisation ? + +TEST: __ocr__ {{lu}} as si bien réussi + + +# M. / Mr / M +__[s>/ocr(ocr_mr)__ (M(?:, | ))[A-ZÉÈ] @@0 <<- -1>> "Mr |M. " # Erreur de numérisation ? + +TEST: __ocr__ {{M, }}Patrick nous a oubliés. + + +# Mais / Hais / Mats / niais +__[u]/ocr(ocr_mais1)__ Hais <<- ->> Mais # Erreur de numérisation ? +__[i]/ocr(ocr_mais2)__ mats <<- not morph(word(-1), ":D:[me]:p", False, False) ->> mais # Erreur de numérisation ? +__[i]/ocr(ocr_mais3)__ maïs <<- not morph(word(-1), ":D:(?:m:s|e:p)", False, False) ->> mais # Erreur de numérisation ? +__[s]/ocr(ocr_mais4)__ + niais <<- not morph(word(-1), ">(?:homme|ce|quel|être)/", False, False) ->> mais # Erreur de numérisation ? + +TEST: __ocr__ {{Hais}} il en sait trop. +TEST: __ocr__ c’était bien, {{mats}} quelle journée +TEST: __ocr__ c’est bien, {{niais}} trop subtil. +TEST: __ocr__ c’est parfait, {{maïs}} trop subtil. + + +# même / même / mème / mémo / môme +__[i]/ocr(ocr_même1)__ mômes? + <<- \0.endswith("e") and not morph(word(-1), ":D.*:[me]:[si]", False, False) ->> même # Erreur de numérisation ? + <<- \0.endswith("s") and not morph(word(-1), ":D.*:[me]:[pi]", False, False) ->> mêmes # Erreur de numérisation ? +__[i]/ocr(ocr_même2)__ mèmes? <<- ->> =\0.replace("è", "ê").replace("È", "Ê") # Erreur de numérisation ? +__[i]/ocr(ocr_même3)__ mémos? <<- ->> =\0.replace("é", "ê").replace("É", "Ê") # Erreur de numérisation ? + +TEST: __ocr__ J’en ai assez {{môme}} si ça ne se voit pas. +TEST: __ocr__ Ces {{mèmes}} hommes qui nous ont lâchés au pire moment +TEST: __ocr__ C’est l’incessant retour du {{mémo}}. + + +# mot / mol / moi +__[i]/ocr(ocr_mot)__ + mols? + <<- ->> =\0.replace("l", "t").replace("L", "T")+"|"+\0.replace("l", "i").replace("L", "I") # Erreur de numérisation ? + +TEST: __ocr__ c’est un {{mol}} très dur. + + +# mon / won +__[i]/ocr(ocr_mon)__ won <<- ->> mon # Erreur de numérisation ? + +TEST: __ocr__ c’est {{won}} ami + + +# ne / na / no / rie +__[i]/ocr(ocr_ne1)__ n[oa] <<- ->> ne # Erreur de numérisation ? +__[s]/ocr(ocr_ne2)__ rie <<- ->> ne # Erreur de numérisation ? + +TEST: __ocr__ {{no}} fais rien que tu pourrais regretter +TEST: __ocr__ elle avance, mais {{rie}} prend jamais de risque inconsidéré. + + +# nous / noue / noua +__[i]/ocr(ocr_nous)__ nou[ea] <<- ->> nous # Erreur de numérisation ? + +TEST: __ocr__ {{noue}} attaquer à eux signerait notre perte. + + +# par / paf / pan / pat +__[i]/ocr(ocr_par)__ pa[fnt] <<- ->> par # Erreur de numérisation ? + +TEST: __ocr__ Une seule action {{paf}} jour + + +# par le / par la / par les / parle / parla / parles +__[i]/ocr(ocr_par_le)__ + (parle) ({w_2}) @@0,$ + <<- not before(r"(?i)\b(?:ne|il|on|elle|je) +$") and morph(\2, ":[NA].*:[me]:[si]", False) -1>> par le # Erreur de numérisation ? +__[i]/ocr(ocr_par_la)__ + (parla) ({w_2}) @@0,$ + <<- not before(r"(?i)\b(?:ne|il|on|elle) +$") and morph(\2, ":[NA].*:[fe]:[si]", False) -1>> par la # Erreur de numérisation ? +__[i]/ocr(ocr_par_les)__ + (parles) ({w_2}) @@0,$ + <<- not before(r"(?i)\b(?:ne|tu) +$") and morph(\2, ":[NA].*:[pi]", False) -1>> par les # Erreur de numérisation ? + +TEST: __ocr__ {{parle}} glaive et le mensonge, l’Église s’imposa. +TEST: __ocr__ {{parla}} force, on peut réussir +TEST: __ocr__ tu fus trompée {{parles}} mensonges permanents de son beau-père. + + +# pendant / pondant +__[i]/ocr(ocr_pendant)__ pondant <<- ->> pendant # Erreur de numérisation ? + +TEST: __ocr__ {{pondant}} qu’elle travaille, il se prélasse. + + +# peu / peut / peux / pou +__[i]/ocr(ocr_peu_peux_peut)__ + poux? + <<- \0.endswith("u") and not morph(word(-1), ":D.*:m:s", False, False) ->> peu # Erreur de numérisation ? + <<- \0.endswith("x") and not morph(word(-1), ":D.*:m:p", False, False) ->> peux|peut|pour # Erreur de numérisation ? + +TEST: __ocr__ il est {{pou}} probable qu’il y parvienne. + + +# plus / pins +__[i]/ocr(ocr_plus)__ pins <<- ->> plus # Erreur de numérisation ? + +TEST: __ocr__ ils sont {{pins}} instruits qu’il n’y paraît. + + +# puis / pois +__[i]/ocr(ocr_puis)__ pois <<- not morph(word(-1), ":D.*:m:p", False, False) ->> puis # Erreur de numérisation ? + +TEST: __ocr__ elles sont venues, {{pois}} elles sont parties. + + +# pour / pouf +__[i]/ocr(ocr_pour)__ pouf <<- not morph(word(-1), ":D.*:f:s", False, False) ->> pour # Erreur de numérisation ? + +TEST: __ocr__ {{pouf}} elle, il était prêt à tout. + + +# près / prés +__[i]/ocr(ocr_près)__ prés <<- not morph(word(-1), ":D.*:[me]:p", False, False) ->> près # Erreur de numérisation ? + +TEST: __ocr__ ils sont arrivés {{prés}} de la tombe. + + +# que / quo +__[i]/ocr(ocr_que)__ + qu[oa] + <<- \0.endswith("a") and not before("sine +$") ->> que # Erreur de numérisation ? + <<- \0.endswith("o") and not before("statu +$") ->> que # Erreur de numérisation ? + +TEST: __ocr__ elles ne savent pas {{quo}} faire +TEST: __ocr__ {{Quo}} penser de tout ceci ? +TEST: __ocr__ pour elle, c’est une condition sine qua non. + + +# qu’importe +__[i]/ocr(ocr_qu_importe)__ + qu’(importé) @@3 + <<- -1>> importe # Erreur de numérisation ? + +TEST: __ocr__ Qu’{{importé}} le flacon, pourvu qu’on ait l’ivresse. + + +# qui / gui +__[i]/ocr(ocr_qui)__ gui <<- not morph(word(-1), ":D.*:m:s", False, False) ->> qui # Erreur de numérisation ? + +TEST: __ocr__ avec {{gui}} faire alliance ? + + +# s’il / sil +__[i]/ocr(ocr_s_il)__ + sils? + <<- \0.endswith("s") ->> s’ils # Erreur de numérisation ? + <<- __else__ ->> s’il # Erreur de numérisation ? + +TEST: __ocr__ {{sil}} avait su, il n’aurait rien tenté de trop audacieux. + + +# sur / sar +__[i]/ocr(ocr_sur)__ sar <<- ->> sur # Erreur de numérisation ? + +TEST: __ocr__ il ne savait rien {{sar}} eux. + + +# tard / lard +__[s]/ocr(ocr_tard)__ lard <<- not before(r"(?i)\b(?:ce|[mts]on|du|un|le) $") ->> tard # Erreur de numérisation ? + +TEST: __ocr__ elles seront là tôt ou {{lard}}. + + +# tandis que / taudis +__[i]/ocr(ocr_tandis)__ (taudis) que? @@0 <<- -1>> tandis # Erreur de numérisation ? + +TEST: __ocr__ mais {{taudis}} qu’elle œuvrait à leur salut, les nuages s’amoncelaient. + + +# l’est / Test +__[i]/ocr(ocr_l_est)__ + Test + <<- before(r"(?i)\w") ->> l’est # Erreur de numérisation ? + +TEST: __ocr__ ça {{Test}} à leurs yeux. + + +# tête / tète +__[i]/ocr(ocr_tête)__ tète + <<- not before(r"(?i)\b(?:je|il|elle|on|ne) $") + ->> =\0.replace("è", "ê").replace("È", "Ê") # Erreur de numérisation ? + +TEST: __ocr__ cette forte {{tète}} n’écoute jamais personne. + + +# tin / fin / un +__[i]/ocr(ocr_fin_un)__ tin <<- ->> fin|un # Erreur de numérisation ? + +TEST: __ocr__ c’était {{tin}} marchand vaniteux. + + +# ton / tan +__[i]/ocr(ocr_ton)__ tans? <<- ->> =\0.replace("a", "o").replace("A", "O") # Erreur de numérisation ? + +TEST: __ocr__ pour {{tan}} propre bien. + + +# toute / tonte +__[i]/ocr(ocr_toute)__ tontes? <<- ->> =\0.replace("n", "u").replace("N", "U") # Erreur de numérisation ? + +TEST: __ocr__ à {{tonte}} fin utile + + +# tu es / tues +__[i]/ocr(ocr_tu_es)__ tues + <<- not morph(word(-1), ":(?:N.*:f:p|V0e.*:3p)", False, False) ->> tu es # Erreur de numérisation ? + +TEST: __ocr__ dans tous les cas, {{tues}} foutue. +TEST: __ocr__ ses actions tues. + + +# un / vin +__[i]/ocr(ocr_un)__ vin <<- not before(r"(?i)\b(?:ce|d[eu]|un|quel|leur|le) +") ->> un # Erreur de numérisation ? + +TEST: __ocr__ {{vin}} mathématicien hors du commun. + + +# une / ure / vine +__[i]/ocr(ocr_une1)__ ure <<- ->> une # Erreur de numérisation ? +__[i]/ocr(ocr_une2)__ 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 +__[i]/ocr(ocr_vous)__ vou[ae] <<- ->> vous # Erreur de numérisation ? + +TEST: __ocr__ avec {{voue}}, je n’ai pas confiance. + + +## Casse +__[s]/ocr(ocr_casse1)__ + [A-ZÉÈÂÊÎÔ]{w_1} + <<- \0.istitle() and before(r"(?i)\w") >>> + <<- morphex(\0, ":G", ":M") ->> =\0.lower() # Erreur de numérisation ? Casse improbable. + <<- __else__ and morphex(\0, ":[123][sp]", ":[MNA]|>Est/") ->> =\0.lower() # Erreur de numérisation ? Casse improbable. + +TEST: __ocr__ votre ami la regarde, {{Vous}} ne l’avez pas achetée +TEST: __ocr__ pour accommoder son regard, {{La}} lourde forme demeure +TEST: __ocr__ parler de Nicole, {{Le}} sommeil ne vient pas. +TEST: __ocr__ a fait de toi, Charles, {{Tu}} étais beau quand +TEST: __ocr__ s’habituer à se faire servir, {{Au}} début ça +TEST: __ocr__ Tu as tué ce petit garçon, Henri, {{Et}} tu le sais. +TEST: __ocr__ d’un fil de plastique transparent, {{Il}} l’agite +TEST: __ocr__ sur une glace noire {{Les}} lumières du port +TEST: __ocr__ le roulis du bateau {{Le}} faisant heurter +TEST: __ocr__ si vous {{La}} désirez +TEST: __ocr__ sa main se referme sur {{Je}} livre + + +__[s]/ocr(ocr_casse2)__ + {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. + + +__[s>/ocr(ocr_casse3)__ + [LDNMTSCÇ]’ + <<- before(r"(?i)\w") ->> =\0.lower() # Erreur de numérisation ? Casse douteuse. + +TEST: __ocr__ regarde dans l’obscurité de {{L’}}entrepôt + + +## 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(r"\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 +__/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 + + !!! !!! !!! Processeur: Dernier nettoyage avant coupure du paragraphe en phrases !! !!! @@ -2107,667 +2760,10 @@ TEST: il s’agit d’{{un}} {{anagramme}} TEST: nul ne sait qui arriva à ce pauvre Paul surpris par la pluie. TEST: elle finit par être très fière de son fils. TEST: en tant que président du conseil - - - - -!! -!! -!!!! OCR !! -!! -!! - -# ? -__> " ?" # Erreur de numérisation ? - -TEST: __ocr__ des chiffrements{{ 7}} Paul n’en sait rien. -TEST: __ocr__ veux-tu en parler{{ 7}} - - -# virgules -__[s>/ocr(ocr_virgules)__ - (?:[iI]l|l(?:es?|a)|[dnmtsDNMTS]e|[àÀ]|[cC]e(?:te|t|)|[mM](?:on|a)|[TS]a|[qQ]uelques?|[aA]ux?), - <<- not /0.endswith("…") ->> =\0[:-1] # Erreur de numérisation ? Virgule superflue ? - -TEST: __ocr__ Pierre entre pour {{se,}} rapprocher de L -TEST: __ocr__ je voudrais faire une question ou deux sur une maison de ce village, la… comment l’appelle-t-on ? - - -# Nombres -__[s]/ocr(ocr_nombres)__ - [\dOI][\dOI]+ - <<- \0 == "II" ->> 11|Il # Erreur de numérisation ? - <<- __else__ and not \0.isdigit() ->> =\0.replace("O", "0").replace("I", "1") # Erreur de numérisation ? - -TEST: __ocr__ {{II}} pleut tout le temps. -TEST: __ocr__ En l’an {{2OO1}}, tout commença. - - -# âge / age -__[i]/ocr(ocr_age)__ ages? <<- ->> =\0.replace("a", "â").replace("A", "Â") # Erreur de numérisation ? - -TEST: __ocr__ À son {{age}}, on ne sait plus ce qu’on fait. - - -# autre / antre -__[i]/ocr(ocr_autre)__ antres? <<- ->> =\0.replace("n", "u") # Erreur de numérisation ? - -TEST: __ocr__ cet {{antre}} gars lui semblait bien louche. - - -# avec / aven / arec -__[i]/ocr(ocr_avec)__ a(?:rec|ven) <<- ->> avec # Erreur de numérisation ? - -TEST: __ocr__ Elle s’en alla {{arec}} eux sans un regard en arrière. - -# avaient / avalent -__[i]/ocr(ocr_avaient)__ avalent <<- ->> avaient # Erreur de numérisation ? - -TEST: __ocr__ Ils {{avalent}} très faim. - - -# avais / avals / axais -__[i]/ocr(ocr_avis)__ a(?:val|xai)s <<- ->> avais # Erreur de numérisation ? - -TEST: __ocr__ j’{{axais}} souvent perdu le contrôle de moi-même, mais jamais à ce point - - -# car dans / cardans -__[i]/ocr(ocr_car_dans)__ cardans <<- ->> car dans # Erreur de numérisation ? - -TEST: __ocr__ On se tut tous, {{cardans}} l’armée on apprend à la boucler. - - -# chère / obère -__[i]/ocr(ocr_chère)__ obère <<- not before(r"(?i)\b([jnlmts]’|il |on |elle )$") ->> chère # Erreur de numérisation ? - -TEST: __ocr__ cette femme {{obère}} à notre cœur. - - -# celui / celai -__[i]/ocr(ocr_celui)__ celai <<- not before(r"(?i)\b[jn]e +$") ->> celui # Erreur de numérisation ? - -TEST: __ocr__ je suis déjà venu et {{celai}} qui viendra encore. - - -# ces / cos -__[i]/ocr(ocr_ces)__ cos <<- ->> ces # Erreur de numérisation ? - -TEST: __ocr__ {{cos}} problèmes sont insolubles. - - -# C’était / Celait -__[i]/ocr(ocr_c_était)__ celait <<- ->> c’était # Erreur de numérisation ? - -TEST: __ocr__ {{celait}} perdu d’avance. - - -# cette / celte -__[i]/ocr(ocr_cette1)__ (cel[tl]e) ({w_2}) @@0,$ <<- morph(\2, ":N.*:f:s", False) -1>> cette # Erreur de numérisation ? - -TEST: __ocr__ mais {{celte}} femme semblait savoir ce qu’elle faisait. -TEST: __ocr__ avec {{celle}} tentative d’humour, il pensait nous faire rire. - - -# cette / cotte -__[i]/ocr(ocr_cette2)__ cotte <<- not morph(word(-1), ":D.*:f:[si]") ->> cette # Erreur de numérisation ? - -TEST: __ocr__ on poirautait, {{cotte}} mariée n’arrivait pas à se décider. - - -# Comme / Gomme -__[s]/ocr(ocr_comme)__ Gomme <<- not morph(word(1), ">(?:et|o[uù])/") ->> Comme # Erreur de numérisation ? - -TEST: __ocr__ {{Gomme}} il était sage à cette époque-là ! - - -# Comment / Gomment -__[s]/ocr(ocr_comment)__ Gomment <<- ->> Comment # Erreur de numérisation ? - -TEST: __ocr__ {{Gomment}} s’en sortir avec tous ces retards qui s’accumulent ? - - -# contre / coutre / contra -__[i]/ocr(ocr_contre)__ co[un]tr[ea] <<- not re.search("(?i)^contre$", \0) ->> contre # Erreur de numérisation ? - -TEST: __ocr__ elle était {{coutre}} cette idée et le serait toujours. - - -# de / da -__[i]/ocr(ocr_de)__ da <<- ->> de # Erreur de numérisation ? - -TEST: __ocr__ Le nombre {{da}} personnes endettées augmente sans cesse. - - -# dans / bans / clans -__[i]/ocr(ocr_dans1)__ bans <<- not morph(word(-1), ":D.*:p", False, False) ->> dans # Erreur de numérisation ? -__[s]/ocr(ocr_dans2)__ - (clans) (?:les?|la|ce(?:tte|t|s|)|des?|[mts](?:on|a|es)|leurs?|[nv]os|cha(?:que|cun)|tou(?:tes?|s|t)) @@0 - <<- not morph(word(-1), ":D.*:p", False, False) -1>> dans # Erreur de numérisation ? - -TEST: __ocr__ Mais {{bans}} cette ferme, tout était bien organisé. -TEST: __ocr__ sache que, {{clans}} cette ferme, on ne fait que du bio. - - -# dame / darne -__[i]/ocr(ocr_dame)__ - darnes - <<- ->> =\0.replace("rn", "m") # Erreur de numérisation ? - -TEST: __ocr__ ces {{darnes}} arrivèrent avec dix minutes d’avance. - - -# dé / de / dés / des / dès -__[i]/ocr(ocr_de_des1)__ - dés? - <<- \0.endswith("é") and not morph(word(-1), ":D.*:m:[si]", False, False) ->> de # Erreur de numérisation ? - <<- \0.endswith("s") and not morph(word(-1), ":D.*:m:p", False, False) ->> des|dès # Erreur de numérisation ? - -TEST: __ocr__ {{dés}} fois, ça ne passe pas -TEST: __ocr__ {{dé}} gros camions circulaient toute la journée - - -# de / dos -__[i]/ocr(ocr_de_des2)__ - dos? - <<- \0.endswith("o") ->> de # Erreur de numérisation ? - <<- __else__ and not morph(word(-1), ":D.*:[me]", False, False) ->> des|dès # Erreur de numérisation ? - -TEST: __ocr__ {{dos}} camions cabossés à n’en plus finir - - -# de la / delà -__[i]/ocr(ocr_de_la)__ delà <<- not before(r"(?i)\bau ") ->> de la|de là # Erreur de numérisation ? - -TEST: __ocr__ la peinture {{delà}} maison s’écaillait - - -# doute / cloute -__[i]/ocr(ocr_doute)__ cloute <<- ->> doute # Erreur de numérisation ? - -TEST: __ocr__ Sans aucun {{cloute}}. - - -# du / dû -__[i]/ocr(ocr_du)__ - (dû) +({w_3}) @@0,$ - <<- morph(\2, ":[NA]:[me]:[si]", ":Y") -1>> du # Erreur de numérisation ? - -TEST: __ocr__ prendre {{dû}} bon temps -TEST: __ocr__ Tous eussent dû subir ce supplice raffiné. - - -# elle / elfe -__[s]/ocr(ocr_elle)__ - [eE]lfes? - <<- \0.endswith("e") and ( morph(word(-1), ":R", False, True) or isNextVerb() ) ->> elle # Erreur de numérisation ? - <<- \0.endswith("s") and ( morph(word(-1), ":R", False, True) or isNextVerb() ) ->> elles # Erreur de numérisation ? - -TEST: __ocr__ {{Elfes}} s’ennuyaient à mourir. - - -# est / ost -__[i]/ocr(ocr_est)__ ost <<- ->> est # Erreur de numérisation ? - -TEST: __ocr__ Le cheval {{ost}} attaché. - - -# et / cl -__[i]/ocr(ocr_et)__ [cE][l1] <<- not before("[0-9] +$") ->> et # Erreur de numérisation ? - -TEST: __ocr__ elle {{cl}} lui, c’était pour la vie. -TEST: __ocr__ {{El}} il faisait froid là-haut - - -# état / étal -__[i]/ocr(ocr_état)__ - étals? - <<- \0.endswith("l") ->> état # Erreur de numérisation ? - <<- __else__ ->> étais|états # Erreur de numérisation ? - -TEST: __ocr__ Quels {{étals}} sont venus ? - - -# étaient / étalent -__[i]/ocr(ocr_étaient)__ étalent <<- ->> étaient # Erreur de numérisation ? - -TEST: __ocr__ Ce qu’ils {{étalent}} vraiment, nul ne le savait. - - -# fille / tille -__[i]/ocr(ocr_fille)__ tille <<- ->> fille # Erreur de numérisation ? - -TEST: __ocr__ Cette {{tille}} n’en avait jamais assez. - - -# fut / rut -__[i]/ocr(ocr_fut)__ rut <<- ->> fut # Erreur de numérisation ? - -TEST: __ocr__ ce petit {{rut}} traité comme un chien - -# il / n -__[s]/ocr(ocr_il)__ - (n )([bcdfghjklmnpqrstvwxz][\w-]+) @@0,$ - <<- isStart() and morph(\2, ":(?:O[on]|3s)", False) -1>> "il " # Erreur de numérisation ? - -TEST: __ocr__ {{n }}contient trop de soufre. - - -# il / ils / U / Us -__[s]/ocr(ocr_il_ils2)__ - Us? - <<- \0.endswith("s") ->> Ils|ils # Erreur de numérisation ? - <<- __else__ ->> Il|il # Erreur de numérisation ? - -TEST: __ocr__ {{Us}} arrive demain. - - -# il / i1 / if / 11 -__[s]/ocr(ocr_il_ils3)__ - [iI1][1f]s? - <<- not \0.endswith("s") ->> Il|il # Erreur de numérisation ? - <<- __else__ ->> Ils|ils # Erreur de numérisation ? - -TEST: __ocr__ {{i1s}} en savent beaucoup trop pour leur propre bien. - - -# fa / la -__[i]/ocr(ocr_la)__ fa <<- ->> la # Erreur de numérisation ? - -TEST: __ocr__ dans {{fa}} demeure - - -# large / largo -__[i]/ocr(ocr_large)__ largos? <<- ->> =\0.replace("o", "e") # Erreur de numérisation ? - -TEST: __ocr__ elle pense {{largo}} - - -# l’ / j’ / Y / I -__[s]/ocr(ocr_lj1)__ - (Y[ ’'])([aâeéèêëiîïoôuy][\w-]+) @@0,2 - <<- before(r"(?i)\w") or not morph(\2, ":Y", False) -1>> l’|L’|j’|J’ # Erreur de numérisation ? -__[s]/ocr(ocr_lj2)__ - ([Ii1][ ’'])([aâeéèêëiîïoôuy][\w-]+) @@0,2 - <<- -1>> l’|L’|j’|J’ # Erreur de numérisation ? - -TEST: __ocr__ {{Y’}}arrive demain. -TEST: __ocr__ {{I’}}arrive demain. - - -# ! -__> " !" # Erreur de numérisation ? -__> " !" # Erreur de numérisation ? - -TEST: __ocr__ Oh{{ I}} c’est pas formidable ? -TEST: __ocr__ Vraiment{{ 1}} Paul n’en savait rien. -TEST: __ocr__ Ça prendra 1 h. -TEST: __ocr__ Valeur : 1 KHz. - - -# l’ / V / P -__[s]/ocr(ocr_lv)__ - V({w_2}) @@1 - <<- \0.istitle() and before(r"(?i)\w") and morphex(\0, ":", ":M") >>> - <<- spell(\1) ->> v\1|l’\1 # Erreur de numérisation ? - <<- __else__ ->> v\1 # Erreur de numérisation ? -__[s]/ocr(ocr_lp)__ - P([aâeéêèiîïoôuy]{w_1}) @@1 - <<- before(r"(?i)\w") and morphex(\0, ":", ":M") and spell(\1) ->> l’\1|p\1 # Erreur de numérisation ? - -TEST: __ocr__ beaucoup de {{Vélos}} à Versailles. -TEST: __ocr__ avec {{Vagile}} méthode de notre amie Virginie, tout est possible. -TEST: __ocr__ Viens demain. -TEST: __ocr__ Ce jour où Valérie eut sa licence de droit. -TEST: __ocr__ Il scrute Pierre, {{Pair}} maussade. -TEST: __ocr__ Une grosse vague arrivait et {{Peau}} remplit. -TEST: __ocr__ selon toute logique, Paris sera épargné. - - -# l’était / Tétait -__[s]/ocr(ocr_l_était)__ - Tétait - <<- before(r"(?i)\w") ->> l’était # Erreur de numérisation ? - -TEST: __ocr__ perdu, cet homme {{Tétait}} - - -# le les / lé / lés -__[i]/ocr(ocr_le_les)__ - lés? - <<- ->> =\0.replace("é", "e").replace("É", "E") # Erreur de numérisation ? - -TEST: __ocr__ il s’agit de {{lés}} observer. - - -__[i]/ocr(ocr_le_la)__ - 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 - - -# les / lai / lei -__[i]/ocr(ocr_lui_les)__ l[ae]i <<- ->> lui|les # Erreur de numérisation ? - -TEST: __ocr__ {{lai}} gros sont mal vus. - - -# le / la / tu / lu -__[s]/ocr(ocr_tu_le_la)__ lu <<- not morph(word(-1), ":(?:V0|N.*:m:[si])", False, False) ->> tu|le|la # Erreur de numérisation ? - -TEST: __ocr__ {{lu}} as si bien réussi - - -# M. / Mr / M -__[s>/ocr(ocr_mr)__ (M(?:, | ))[A-ZÉÈ] @@0 <<- -1>> "Mr |M. " # Erreur de numérisation ? - -TEST: __ocr__ {{M, }}Patrick nous a oubliés. - - -# Mais / Hais / Mats / niais -__[u]/ocr(ocr_mais1)__ Hais <<- ->> Mais # Erreur de numérisation ? -__[i]/ocr(ocr_mais2)__ mats <<- not morph(word(-1), ":D:[me]:p", False, False) ->> mais # Erreur de numérisation ? -__[i]/ocr(ocr_mais3)__ maïs <<- not morph(word(-1), ":D:(?:m:s|e:p)", False, False) ->> mais # Erreur de numérisation ? -__[s]/ocr(ocr_mais4)__ - niais <<- not morph(word(-1), ">(?:homme|ce|quel|être)/", False, False) ->> mais # Erreur de numérisation ? - -TEST: __ocr__ {{Hais}} il en sait trop. -TEST: __ocr__ c’était bien, {{mats}} quelle journée -TEST: __ocr__ c’est bien, {{niais}} trop subtil. -TEST: __ocr__ c’est parfait, {{maïs}} trop subtil. - - -# même / même / mème / mémo / môme -__[i]/ocr(ocr_même1)__ mômes? - <<- \0.endswith("e") and not morph(word(-1), ":D.*:[me]:[si]", False, False) ->> même # Erreur de numérisation ? - <<- \0.endswith("s") and not morph(word(-1), ":D.*:[me]:[pi]", False, False) ->> mêmes # Erreur de numérisation ? -__[i]/ocr(ocr_même2)__ mèmes? <<- ->> =\0.replace("è", "ê").replace("È", "Ê") # Erreur de numérisation ? -__[i]/ocr(ocr_même3)__ mémos? <<- ->> =\0.replace("é", "ê").replace("É", "Ê") # Erreur de numérisation ? - -TEST: __ocr__ J’en ai assez {{môme}} si ça ne se voit pas. -TEST: __ocr__ Ces {{mèmes}} hommes qui nous ont lâchés au pire moment -TEST: __ocr__ C’est l’incessant retour du {{mémo}}. - - -# mot / mol / moi -__[i]/ocr(ocr_mot)__ - mols? - <<- ->> =\0.replace("l", "t").replace("L", "T")+"|"+\0.replace("l", "i").replace("L", "I") # Erreur de numérisation ? - -TEST: __ocr__ c’est un {{mol}} très dur. - - -# mon / won -__[i]/ocr(ocr_mon)__ won <<- ->> mon # Erreur de numérisation ? - -TEST: __ocr__ c’est {{won}} ami - - -# ne / na / no / rie -__[i]/ocr(ocr_ne1)__ n[oa] <<- ->> ne # Erreur de numérisation ? -__[s]/ocr(ocr_ne2)__ rie <<- ->> ne # Erreur de numérisation ? - -TEST: __ocr__ {{no}} fais rien que tu pourrais regretter -TEST: __ocr__ elle avance, mais {{rie}} prend jamais de risque inconsidéré. - - -# nous / noue / noua -__[i]/ocr(ocr_nous)__ nou[ea] <<- ->> nous # Erreur de numérisation ? - -TEST: __ocr__ {{noue}} attaquer à eux signerait notre perte. - - -# par / paf / pan / pat -__[i]/ocr(ocr_par)__ pa[fnt] <<- ->> par # Erreur de numérisation ? - -TEST: __ocr__ Une seule action {{paf}} jour - - -# par le / par la / par les / parle / parla / parles -__[i]/ocr(ocr_par_le)__ - (parle) ({w_2}) @@0,$ - <<- not before(r"(?i)\b(?:ne|il|on|elle|je) +$") and morph(\2, ":[NA].*:[me]:[si]", False) -1>> par le # Erreur de numérisation ? -__[i]/ocr(ocr_par_la)__ - (parla) ({w_2}) @@0,$ - <<- not before(r"(?i)\b(?:ne|il|on|elle) +$") and morph(\2, ":[NA].*:[fe]:[si]", False) -1>> par la # Erreur de numérisation ? -__[i]/ocr(ocr_par_les)__ - (parles) ({w_2}) @@0,$ - <<- not before(r"(?i)\b(?:ne|tu) +$") and morph(\2, ":[NA].*:[pi]", False) -1>> par les # Erreur de numérisation ? - -TEST: __ocr__ {{parle}} glaive et le mensonge, l’Église s’imposa. -TEST: __ocr__ {{parla}} force, on peut réussir -TEST: __ocr__ tu fus trompée {{parles}} mensonges permanents de son beau-père. - - -# pendant / pondant -__[i]/ocr(ocr_pendant)__ pondant <<- ->> pendant # Erreur de numérisation ? - -TEST: __ocr__ {{pondant}} qu’elle travaille, il se prélasse. - - -# peu / peut / peux / pou -__[i]/ocr(ocr_peu_peux_peut)__ - poux? - <<- \0.endswith("u") and not morph(word(-1), ":D.*:m:s", False, False) ->> peu # Erreur de numérisation ? - <<- \0.endswith("x") and not morph(word(-1), ":D.*:m:p", False, False) ->> peux|peut|pour # Erreur de numérisation ? - -TEST: __ocr__ il est {{pou}} probable qu’il y parvienne. - - -# plus / pins -__[i]/ocr(ocr_plus)__ pins <<- ->> plus # Erreur de numérisation ? - -TEST: __ocr__ ils sont {{pins}} instruits qu’il n’y paraît. - - -# puis / pois -__[i]/ocr(ocr_puis)__ pois <<- not morph(word(-1), ":D.*:m:p", False, False) ->> puis # Erreur de numérisation ? - -TEST: __ocr__ elles sont venues, {{pois}} elles sont parties. - - -# pour / pouf -__[i]/ocr(ocr_pour)__ pouf <<- not morph(word(-1), ":D.*:f:s", False, False) ->> pour # Erreur de numérisation ? - -TEST: __ocr__ {{pouf}} elle, il était prêt à tout. - - -# près / prés -__[i]/ocr(ocr_près)__ prés <<- not morph(word(-1), ":D.*:[me]:p", False, False) ->> près # Erreur de numérisation ? - -TEST: __ocr__ ils sont arrivés {{prés}} de la tombe. - - -# que / quo -__[i]/ocr(ocr_que)__ - qu[oa] - <<- \0.endswith("a") and not before("sine +$") ->> que # Erreur de numérisation ? - <<- \0.endswith("o") and not before("statu +$") ->> que # Erreur de numérisation ? - -TEST: __ocr__ elles ne savent pas {{quo}} faire -TEST: __ocr__ {{Quo}} penser de tout ceci ? -TEST: __ocr__ pour elle, c’est une condition sine qua non. - - -# qu’importe -__[i]/ocr(ocr_qu_importe)__ - qu (importé) @@3 - <<- -1>> importe # Erreur de numérisation ? - -TEST: __ocr__ Qu’{{importé}} le flacon, pourvu qu’on ait l’ivresse. - - -# qui / gui -__[i]/ocr(ocr_qui)__ gui <<- not morph(word(-1), ":D.*:m:s", False, False) ->> qui # Erreur de numérisation ? - -TEST: __ocr__ avec {{gui}} faire alliance ? - - -# s’il / sil -__[i]/ocr(ocr_s_il)__ - sils? - <<- \0.endswith("s") ->> s’ils # Erreur de numérisation ? - <<- __else__ ->> s’il # Erreur de numérisation ? - -TEST: __ocr__ {{sil}} avait su, il n’aurait rien tenté de trop audacieux. - - -# sur / sar -__[i]/ocr(ocr_sur)__ sar <<- ->> sur # Erreur de numérisation ? - -TEST: __ocr__ il ne savait rien {{sar}} eux. - - -# tard / lard -__[s]/ocr(ocr_tard)__ lard <<- not before(r"(?i)\b(?:ce|[mts]on|du|un|le) $") ->> tard # Erreur de numérisation ? - -TEST: __ocr__ elles seront là tôt ou {{lard}}. - - -# tandis que / taudis -__[i]/ocr(ocr_tandis)__ (taudis) que? @@0 <<- -1>> tandis # Erreur de numérisation ? - -TEST: __ocr__ mais {{taudis}} qu’elle œuvrait à leur salut, les nuages s’amoncelaient. - - -# l’est / Test -__[i]/ocr(ocr_l_est)__ - Test - <<- before(r"(?i)\w") ->> l’est # Erreur de numérisation ? - -TEST: __ocr__ ça {{Test}} à leurs yeux. - - -# tête / tète -__[i]/ocr(ocr_tête)__ tète - <<- not before(r"(?i)\b(?:je|il|elle|on|ne) $") - ->> =\0.replace("è", "ê").replace("È", "Ê") # Erreur de numérisation ? - -TEST: __ocr__ cette forte {{tète}} n’écoute jamais personne. - - -# tin / fin / un -__[i]/ocr(ocr_fin_un)__ tin <<- ->> fin|un # Erreur de numérisation ? - -TEST: __ocr__ c’était {{tin}} marchand vaniteux. - - -# ton / tan -__[i]/ocr(ocr_ton)__ tans? <<- ->> =\0.replace("a", "o").replace("A", "O") # Erreur de numérisation ? - -TEST: __ocr__ pour {{tan}} propre bien. - - -# toute / tonte -__[i]/ocr(ocr_toute)__ tontes? <<- ->> =\0.replace("n", "u").replace("N", "U") # Erreur de numérisation ? - -TEST: __ocr__ à {{tonte}} fin utile - - -# tu es / tues -__[i]/ocr(ocr_tu_es)__ tues - <<- not morph(word(-1), ":(?:N.*:f:p|V0e.*:3p)", False, False) ->> tu es # Erreur de numérisation ? - -TEST: __ocr__ dans tous les cas, {{tues}} foutue. -TEST: __ocr__ ses actions tues. - - -# un / vin -__[i]/ocr(ocr_un)__ vin <<- not before(r"(?i)\b(?:ce|d[eu]|un|quel|leur|le) +") ->> un # Erreur de numérisation ? - -TEST: __ocr__ {{vin}} mathématicien hors du commun. - - -# une / ure / vine -__[i]/ocr(ocr_une1)__ ure <<- ->> une # Erreur de numérisation ? -__[i]/ocr(ocr_une2)__ 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 -__[i]/ocr(ocr_vous)__ vou[ae] <<- ->> vous # Erreur de numérisation ? - -TEST: __ocr__ avec {{voue}}, je n’ai pas confiance. - - -## Casse -__[s]/ocr(ocr_casse1)__ - [A-ZÉÈÂÊÎÔ]{w_1} - <<- \0.istitle() and before(r"(?i)\w") >>> - <<- morphex(\0, ":G", ":M") ->> =\0.lower() # Erreur de numérisation ? Casse improbable. - <<- __else__ and morphex(\0, ":[123][sp]", ":[MNA]|>Est/") ->> =\0.lower() # Erreur de numérisation ? Casse improbable. - -TEST: __ocr__ votre ami la regarde, {{Vous}} ne l’avez pas achetée -TEST: __ocr__ pour accommoder son regard, {{La}} lourde forme demeure -TEST: __ocr__ parler de Nicole, {{Le}} sommeil ne vient pas. -TEST: __ocr__ a fait de toi, Charles, {{Tu}} étais beau quand -TEST: __ocr__ s’habituer à se faire servir, {{Au}} début ça -TEST: __ocr__ Tu as tué ce petit garçon, Henri, {{Et}} tu le sais. -TEST: __ocr__ d’un fil de plastique transparent, {{Il}} l’agite -TEST: __ocr__ sur une glace noire {{Les}} lumières du port -TEST: __ocr__ le roulis du bateau {{Le}} faisant heurter -TEST: __ocr__ si vous {{La}} désirez -TEST: __ocr__ sa main se referme sur {{Je}} livre - - -__[s]/ocr(ocr_casse2)__ - {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. - - -__[s>/ocr(ocr_casse3)__ - [LDNMTSCÇ]’ - <<- before(r"(?i)\w") ->> =\0.lower() # Erreur de numérisation ? Casse douteuse. - -TEST: __ocr__ regarde dans l’obscurité de {{L’}}entrepôt - - -## 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(r"\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 -__/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 - - @@@@