F�lgende unntak b�r tas h�nd om:
Vest- Tyskland
Regelen er at neste rad begynner med stor bokstav (evt. unntak hvis hele ordet er skrevet med store bokstaver)
Denne blir vel verre:
romersk- katolsk
mvh
Ketil F. Hanssen
------- Original Message -------
From : Tommy Riboe tommy.riboe@bbab.se Date : Wed, 28 Jan 2004 00:37:13 +0100
Jag byggde vidare p� regexp-exemplet fr�n Bengt och kan nu erbjuda
nedanst�ende f�rslag. Eftersom jag �r s� gott som nyb�rjare p� Perl s� skall mitt exempel tas som ett algoritmf�rslag och kompletteras med felhantering och liknande. Dessutom har jag s�kert missat n�got undantagsfall. Det verkar i alla fall fungera med den medf�ljande texten ut�kad med enstaka instanser av mina undantag.
mvh Tommy Riboe
#============================================ #!/bin/perl # # huvudregel: # a) rader vars sista ord slutar med '-' bryts f�re avstavat ord # b) avstavat ord sammanfogas p� n�sta rad # c) indrag bibeh�lles # # undantag: # a) rad som slutar med tankstreck (ensamt '-') # b) rad som slutar med f�rled i upprepade sammansatta ord # c) avstavning i sidans sista rad # # vid undantag b) flyttas f�rledet till f�ljande rad
seek(STDIN, 0, SEEK_SET); $line= ""; $nextline= ""; $spill = "";
#if () { # l�s in f�rsta raden $line = ; { # avl�gsna ord som slutar med bindestreck fr�n # slutet av raden, med undantag f�r ensamma # bindestreck, placera avl�gsnad text i $spill $line =~ s/(\s*)(.*)( +?)(\S+?)-$/\1\2/; $spill = $4; } print $line;
while () {
# testa om n�sta rad b�rjar med "och", "eller" # (b�r mer naturligt placeras efter n�sta sats # och anv�nda sig av $nextline) if (/^\s*(och|eller).*$/) { $spill = $spill . "- "; }
# f�rbered n�sta rad $nextline = $_;
# s�tt ihop marginal + spill + n�sta_rad $nextline =~ s/(\s*)(.+?)$/$1$spill$2/;
# g�r n�sta rad till aktuell rad $line = $nextline;
# avl�gsna ord som slutar med bindestreck fr�n # slutet av raden, med undantag f�r ensamma # bindestreck, placera avl�gsnad text i $spill $line =~ s/(\s*)(.*)( +?)(\S+?)-$/\1\2/; $spill = $4; print $line; } #} print "\n(till n�sta sida: " . $spill . ")\n"; #============================================
-----Ursprungligt meddelande----- Fr�n: runeberg-admin@lists.lysator.liu.se [mailto:runeberg-admin@lists.lysator.liu.se]F�r Bengt J. Olsson Skickat: den 27 januari 2004 00:00 Till: runeberg@lists.lysator.liu.se; Hans Persson �mne: [Runeberg] Re: [Runeberg] Vill du hj�lpa Projekt Runeberg programmera?
Har inte n�got f�rdigt program men har f�ljande brott-stycke av ett s�nt program;
$line =~ s/(.*) (.+?)-$/$1/;
allt utom det avstavade ordet finns kvar i $1; f�rsta delen av det avstavade ordet finns i $2>
$line = $2 . $line;
M v h Bengt
Bengt J. Olsson bengt@blafs.com http://blafs.com
_______________________________________________ Runeberg mailing list Runeberg@lists.lysator.liu.se http://lists.lysator.liu.se/mailman/listinfo/runeberg
_________________________________________________________ Finn dine gamle klassekamerater på http://klassekamerater.nettavisen.no
Hej!
Varför översätter inte OCR-programmet tankestreck till tankestreck, bindestreck till bindestreck och minustecken till minustecken? Jag har stött på "inte-tecken" (¬, eller ¬) som översatts till ett "minustecken". Det som scriptet ska bearbeta verkar ju vara s.k. "mjuka bindestreck", som har sin egen kod (­). Detta är definierat i HTML 4.0, om än inte Safari eller IE för Macintosh verkar ha det klart för sig...
Det finns även endel ord som är icke-svenska – exempelvis 1800-tals utgåvans "mytologi" ("lapsk mytologi"). Endel ord skrivs som bokstäver åtskilda med mellanrum, men bindestrecket fungerar både som hårt och mjukt.
Ordet "L u o t - c h o z i k" är ett sådant exempel, där bindestreck fungerar som både en ordseparation och radbrytning. Å andra sidan är "S t o r j u n - k a r e n" ett undantag, för där fungerar bindestrecket bara som (felaktig utsatt?) radbrytning. Kanske det borde finnas en regel "om bindestrecket förbigås eller efterföljs av ett ord med en bokstav, så lämna ordet orört".
Dessutom skulle jag vilja införa märkningar på orden, men detta är en annan diskussion. :-)
onsdagen den 28 januari 2004 kl 08.28 skrev Ketil Firing Hanssen:
Følgende unntak bør tas hånd om:
Vest- Tyskland
Regelen er at neste rad begynner med stor bokstav (evt. unntak hvis hele ordet er skrevet med store bokstaver)
Denne blir vel verre:
romersk- katolsk
mvh
Ketil F. Hanssen
------- Original Message -------
From : Tommy Riboe tommy.riboe@bbab.se Date : Wed, 28 Jan 2004 00:37:13 +0100
Jag byggde vidare på regexp-exemplet från Bengt och kan nu erbjuda
nedanstående förslag. Eftersom jag är så gott som nybörjare på Perl så skall mitt exempel tas som ett algoritmförslag och kompletteras med felhantering och liknande. Dessutom har jag säkert missat något undantagsfall. Det verkar i alla fall fungera med den medföljande texten utökad med enstaka instanser av mina undantag.
mvh Tommy Riboe
#============================================ #!/bin/perl # # huvudregel: # a) rader vars sista ord slutar med '-' bryts före avstavat ord # b) avstavat ord sammanfogas på nästa rad # c) indrag bibehålles # # undantag: # a) rad som slutar med tankstreck (ensamt '-') # b) rad som slutar med förled i upprepade sammansatta ord # c) avstavning i sidans sista rad # # vid undantag b) flyttas förledet till följande rad
seek(STDIN, 0, SEEK_SET); $line= ""; $nextline= ""; $spill = "";
#if () { # läs in första raden $line = ; { # avlägsna ord som slutar med bindestreck från # slutet av raden, med undantag för ensamma # bindestreck, placera avlägsnad text i $spill $line =~ s/(\s*)(.*)( +?)(\S+?)-$/\1\2/; $spill = $4; } print $line;
while () {
# testa om nästa rad börjar med "och", "eller" # (bör mer naturligt placeras efter nästa sats # och använda sig av $nextline) if (/^\s*(och|eller).*$/) { $spill = $spill . "- "; } # förbered nästa rad $nextline = $_; # sätt ihop marginal + spill + nästa_rad $nextline =~ s/(\s*)(.+?)$/$1$spill$2/; # gör nästa rad till aktuell rad $line = $nextline; # avlägsna ord som slutar med bindestreck från # slutet av raden, med undantag för ensamma # bindestreck, placera avlägsnad text i $spill $line =~ s/(\s*)(.*)( +?)(\S+?)-$/\1\2/; $spill = $4; print $line;
} #} print "\n(till nästa sida: " . $spill . ")\n"; #============================================
-----Ursprungligt meddelande----- Från: runeberg-admin@lists.lysator.liu.se [mailto:runeberg-admin@lists.lysator.liu.se]För Bengt J. Olsson Skickat: den 27 januari 2004 00:00 Till: runeberg@lists.lysator.liu.se; Hans Persson Ämne: [Runeberg] Re: [Runeberg] Vill du hjälpa Projekt Runeberg programmera?
Har inte något färdigt program men har följande brott-stycke av ett sånt program;
$line =~ s/(.*) (.+?)-$/$1/;
allt utom det avstavade ordet finns kvar i $1; första delen av det avstavade ordet finns i $2>
$line = $2 . $line;
M v h Bengt
Bengt J. Olsson bengt@blafs.com http://blafs.com
Runeberg mailing list Runeberg@lists.lysator.liu.se http://lists.lysator.liu.se/mailman/listinfo/runeberg
Finn dine gamle klassekamerater på http://klassekamerater.nettavisen.no
Från: Tommy Riboe tommy.riboe@bbab.se Datum: ons 28 jan 2004 00.37.13 Till: runeberg@lists.lysator.liu.se Ämne: [Runeberg] SV: [Runeberg] Vill du hj‰lpa Projekt Runeberg programmera? Svara-till:: tommy.riboe@bbab.se
Jag byggde vidare på regexp-exemplet från Bengt och kan nu erbjuda nedanstående förslag. Eftersom jag är så gott som nybörjare på Perl så skall mitt exempel tas som ett algoritmförslag och kompletteras med felhantering och liknande. Dessutom har jag säkert missat något undantagsfall. Det verkar i alla fall fungera med den medföljande texten utökad med enstaka instanser av mina undantag.
mvh Tommy Riboe
#============================================ #!/bin/perl # # huvudregel: # a) rader vars sista ord slutar med '-' bryts före avstavat ord # b) avstavat ord sammanfogas på nästa rad # c) indrag bibehålles # # undantag: # a) rad som slutar med tankstreck (ensamt '-') # b) rad som slutar med förled i upprepade sammansatta ord # c) avstavning i sidans sista rad # # vid undantag b) flyttas förledet till följande rad
seek(STDIN, 0, SEEK_SET); $line= ""; $nextline= ""; $spill = "";
#if (<STDIN>) { # läs in första raden $line = <STDIN>; { # avlägsna ord som slutar med bindestreck från # slutet av raden, med undantag för ensamma # bindestreck, placera avlägsnad text i $spill $line =~ s/(\s*)(.*)( +?)(\S+?)-$/\1\2/; $spill = $4; } print $line;
while (<STDIN>) {
# testa om nästa rad börjar med "och", "eller" # (bör mer naturligt placeras efter nästa sats # och använda sig av $nextline) if (/^\s*(och|eller).*$/) { $spill = $spill . "- "; } # förbered nästa rad $nextline = $_; # sätt ihop marginal + spill + nästa_rad $nextline =~ s/(\s*)(.+?)$/$1$spill$2/; # gör nästa rad till aktuell rad $line = $nextline; # avlägsna ord som slutar med bindestreck från # slutet av raden, med undantag för ensamma # bindestreck, placera avlägsnad text i $spill $line =~ s/(\s*)(.*)( +?)(\S+?)-$/\1\2/; $spill = $4; print $line;
} #} print "\n(till nästa sida: " . $spill . ")\n"; #============================================
-----Ursprungligt meddelande----- Från: runeberg-admin@lists.lysator.liu.se [mailto:runeberg-admin@lists.lysator.liu.se]För Bengt J. Olsson Skickat: den 27 januari 2004 00:00 Till: runeberg@lists.lysator.liu.se; Hans Persson Ämne: [Runeberg] Re: [Runeberg] Vill du hjälpa Projekt Runeberg programmera?
Har inte något färdigt program men har följande brott-stycke av ett sånt program;
<för varje rad>
$line =~ s/(.*) (.+?)-$/$1/;
<matchar om sista tecknet på raden är "-"; allt utom det avstavade ordet finns kvar i $1; första delen av det avstavade ordet finns i $2>
<nästa rad om matchningen lyckades>
$line = $2 . $line;
<konkatenerar början av det avstavade ordet med nästa rad>
M v h Bengt
Bengt J. Olsson bengt@blafs.com http://blafs.com
Runeberg mailing list Runeberg@lists.lysator.liu.se http://lists.lysator.liu.se/mailman/listinfo/runeberg
Det här är en kommentar till ett inlägg som Roger Persson postade till listan den 28 januari 2004, och som blivit liggande i min inbox. Bättre sent än aldrig! (Det kanske borde vara en devis för hela Projekt Runeberg...)
Varför översätter inte OCR-programmet tankestreck till tankestreck, bindestreck till bindestreck och minustecken till minustecken? Jag har stött på "inte-tecken" (¬, eller ¬) som översatts till ett "minustecken". Det som scriptet ska bearbeta verkar ju vara s.k. "mjuka bindestreck", som har sin egen kod (­). Detta är definierat i HTML 4.0, om än inte Safari eller IE för Macintosh verkar ha det klart för sig...
Tankstreck finns inte i den standard ISO 8859-1 som Projekt Runeberg använder sig av. Vi skriver två minustecken (--) när vi vill ange ett tankstreck. Någon gång i framtiden kommer vi att växla till Unicode (UTF-8) men vi är inte riktigt mogna för det än.
Mina egna rutiner för OCR (och det är jag som OCR:ar det mesta här) förbättras hela tiden. I några av de senast inscannade verken har jag lyckats sammanföra alla avstavade ord, och därmed gjort det väsentligt enklare och roligare att korrekturläsa (om jag får säga det själv).
Om OCR är riktigt dålig för ett verk, och en pina i bakdelen att korrekturläsa, så kan vi köra en förnyad OCR. Berätta vilket verk det gäller.
Förhoppningsvis står det i verkets "förord till den digitala utgåvan" när verket digitaliserades. Annars kan man från titelsidan scrolla till botten av sidan och klicka på länken "(history)". För exempelvis Medeltidens magi (http://www.lysator.liu.se/runeberg/magi/) avslöjar "history" att version 1.1 lades in 18 februari 1996 (!) men först den 2 december 1998 sparades faksimilbilder av alla 279 sidorna. Detta verk är fortfarande inte fullständigt korrekturläst. Åldern för den digitala utgåvan säger en hel del om tekniken och kvaliteten.
Det finns även endel ord som är icke-svenska exempelvis 1800-tals utgåvans "mytologi" ("lapsk mytologi"). Endel ord skrivs som bokstäver åtskilda med mellanrum, men bindestrecket fungerar både som hårt och mjukt.
Ordet "L u o t - c h o z i k" är ett sådant exempel, där bindestreck
Detta kallas spärrad stil och har sin egen typografiska historia. Det användes som ett mellanting mellan fetstil och kursivering för att markera viktiga ord, t.ex. hänvisningar till andra uppslagsord i Nordisk familjebok. Bakgrunden är att den gamla frakturstilen inte hade några kursiva bokstäver. När "fraktur-länderna" Tyskland, Danmark och Sverige övergick från fraktur till dagens antikva, så behöll man ovanan att använda spärrad still för markeringar.
Vid korrekturläsning skriver vi <spärr>Luotchozik</spärr> eller kanske <spärr>Luot-chozik</spärr> om det är ett ord som ska ha bindestreck.
Detta nämns i våra instruktioner för korrekturläsare, men kan säkert formuleras tydligare.