{"id":2315,"date":"2008-06-18T19:15:16","date_gmt":"2008-06-18T16:15:16","guid":{"rendered":"http:\/\/mummila.net\/vuorovaikutus\/?p=132"},"modified":"2008-06-18T19:15:16","modified_gmt":"2008-06-18T16:15:16","slug":"tekstintunnistuksella-tuotetun-tekstitystiedoston-virheiden-korjaaminen","status":"publish","type":"post","link":"https:\/\/mummila.net\/nuudelisoppa\/2008\/06\/18\/tekstintunnistuksella-tuotetun-tekstitystiedoston-virheiden-korjaaminen\/","title":{"rendered":"[Ratkaisu] Tekstintunnistuksella tuotetun tekstitystiedoston virheiden korjaaminen"},"content":{"rendered":"<dl>\n<dt>L\u00e4ht\u00f6kohta<\/dt>\n<dd>Kotihakemistossani on <code>bin<\/code>-alihakemisto ja se on m\u00e4\u00e4ritelty komentojenhakupolkujen (<code>PATH<\/code>-muuttuja) joukkoon komentoriviprofiilissani.<\/p>\n<p>   Olen <a href=\"http:\/\/en.flossmanuals.net\/Avidemux\/ExtractingDVDSubtitles\">muuntanut kuvamuotoisen tekstityksen tekstimuotoiseksi <code>Avidemuxilla<\/code><\/a>. <a href=\"http:\/\/fin.afterdawn.com\/sanasto\/tiedostopaatteet\/srt.cfm\">SRT<\/a>-muotoinen tekstitystiedosto on tallennettu kotihakemistooni tiedostonimell\u00e4 <code>tekstitys.srt<\/code>. Tekstitys sis\u00e4lt\u00e4\u00e4 muunnoksen j\u00e4ljilt\u00e4 joitain toistuvia virheit\u00e4: rivien alussa on v\u00e4lily\u00f6ntej\u00e4, pikku-l ja iso I-kirjain ovat paikoin sekoittuneet, joidenkin numeroiden v\u00e4liss\u00e4 on v\u00e4lily\u00f6ntej\u00e4 vaikka numerot ovat osa samaa lukua, ja lainausmerkin (&#8220;) tilalla on kaksi heittopilkkua (&#8216;&nbsp;&#8216;).<\/dd>\n<dt>Ongelma<\/dt>\n<dd>Virheit\u00e4 on niin paljon, ett\u00e4 niiden korjaaminen k\u00e4sity\u00f6n\u00e4 <code>Tekstieditorissa<\/code> olisi liian ty\u00f6l\u00e4st\u00e4. Haluan korjata virheet tarkoitukseen soveltuvilla komentojonoilla.<\/dd>\n<dt>Ratkaisu<\/dt>\n<dd>Luon seuraavassa listatut komentojonotiedostot, ja tallennan ne kotihakemistossani olevaan bin-alihakemistoon.<\/p>\n<blockquote>\n<pre><code>#!\/bin\/sed -f\ns\/^\\ *\/\/<\/code><\/pre>\n<p>   <a href=\"\/vuorovaikutus\/files\/2008\/post-ocr\/leading_blank.sed\">Lataa <code>leading_blank.sed<\/code><\/a> (24 tavun komentojonotiedosto)<\/p><\/blockquote>\n<blockquote>\n<pre><code>#!\/usr\/bin\/gawk -f\n\nBEGIN { FS = \"\" }\n{\n  previous = \"\"\n  for (i = 1; i &lt;= NF; i = i + 1) {\n    if ($i ~ \/I\/) {\n      if (previous ~ \/[[:lower:]]\/) {\n        printf(\"l\")\n        previous = \"l\"\n      } else if (i == 1) {\n        printf(\"%s\",$i)\n        previous = $i\n      } else if ((previous ~ \/-\/) &amp;&amp; (i == 2)) {\n        printf(\"%s\",$i)\n        previous = $i\n      } else if (i &lt; NF) {\n        for (j = 1; i + j &lt; NF; j = j + 1) {\n          if ($(i+j) ~ \/[[ \\n]]\/) {\n            j = NF\n            break\n          } else if ($(i+j) ~ \/[[:lower:]]\/) {\n            break\n          }\n        }\n        if (i + j &lt; NF) {\n          printf(\"l\")\n          previous = \"l\"\n        } else {\n          printf(\"%s\",$i)\n          previous = $i\n        }\n      } else {\n        printf(\"%s\",$i)\n        previous = $i\n      }\n    } else {\n      printf(\"%s\",$i)\n      previous = $i\n    }\n  }\n  printf(\"\\n\")\n}<\/code><\/pre>\n<p>   <a href=\"\/vuorovaikutus\/files\/2008\/post-ocr\/mixed_verticals.gawk\">Lataa <code>mixed_verticals.gawk<\/code><\/a> (756 tavun komentojonotiedosto)<\/p><\/blockquote>\n<blockquote>\n<pre><code>#!\/bin\/sed -f\ns\/\\([[:digit:]]\\) \\([[:digit:]]\\)\/\\1\\2\/g<\/code><\/pre>\n<p>   <a href=\"\/vuorovaikutus\/files\/2008\/post-ocr\/blank_between_numbers.sed\">Lataa <code>blank_between_numbers.sed<\/code><\/a> (56 tavun komentojonotiedosto)<\/p><\/blockquote>\n<blockquote>\n<pre><code>#!\/bin\/sed -f\ns\/''\/\"\/g<\/code><\/pre>\n<p>   <a href=\"\/vuorovaikutus\/files\/2008\/post-ocr\/double_single_quotes.sed\">Lataa <code>double_single_quotes.sed<\/code><\/a> (24 tavun komentojonotiedosto)<\/p><\/blockquote>\n<p>   T\u00e4m\u00e4n j\u00e4lkeen teen komentojonotiedostoista suoritettavia seuraavalla komennolla:<\/p>\n<blockquote>\n<pre><code>cd ~\/bin &amp;&amp; chmod +x blank_between_numbers.sed leading_blank.sed \\\nmixed_verticals.gawk double_single_quotes.sed<\/code><\/pre>\n<\/blockquote>\n<p>   Lopuksi k\u00e4yt\u00e4n kaikkia komentojonoja tekstitystiedostoon sen korjaamiseksi, seuraavasti:<\/p>\n<blockquote>\n<pre><code>cat ~\/tekstitys.srt \\\n| leading_blank.sed | mixed_verticals.gawk \\\n| blank_between_numbers.sed | double_single_quotes.sed \\\n&gt; ~\/korjattu-tekstitys.txt<\/code><\/pre>\n<\/blockquote>\n<p>   T\u00e4m\u00e4n j\u00e4lkeen kotihakemistossani oleva <code>korjattu-tekstitys.txt<\/code> -niminen tiedosto sis\u00e4lt\u00e4\u00e4 tekstityksen, jossa alkuper\u00e4isess\u00e4 olleet virheet on korjattu.<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"<p>Haluan korjata tekstintunnistuksen tekem\u00e4t virheet automatisoidusti. Virheiden automatisoitu korjaaminen onnistuu sedi\u00e4 ja gawkia k\u00e4ytt\u00e4vill\u00e4 komentojonotiedostoilla.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2315","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/posts\/2315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/comments?post=2315"}],"version-history":[{"count":0,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/posts\/2315\/revisions"}],"wp:attachment":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/media?parent=2315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/categories?post=2315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/tags?post=2315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}