VB.NET

2014年2月 3日 (月)

OCR~青空文庫~html 5

 青空文庫はもともとプレーンなテキストで見たときに邪魔にならないようにタグを作っています。htmlと比べれば一目瞭然です。

html:<ruby><rb>早桶屋</rb><rp>(</rp><rt>はやおけや</rt><rp>)</rp></ruby>
青空:早桶屋《はやおけや》

 この変換を自動でできるようになったわけですが、青空のHPにはテキスト→xhtmlの自動変換アプリが用意されています。ruby(フリガナじゃなくて言語の)上で動くアプリで、青空サイトのcssに依存するスタイルを使うことになるので、今回の目的とはちょっとズレます。

 でもそんなソフトが既存であるなら、自分のプログラムは性格の違うものにしたい。

 OCRしたテキストを青空テキストに変える際の補助機能をつけることにしました。

 はかいき[#「はかいき」に傍点]の[# ]内のタグをいちいち書くのは面倒なので、“はかいき”と囲んでおけば、自動的に処理。テキストの可読性を少しでも高めるために、タグを後ろに置く形式で。
 青空を逸脱する独自タグを使うことになるので、使用には注意が必要です。

 青空のxhtmlタグのうち、サイトに依存しないのは、フリガナの他に上付き・下付き・組文字だけのようなので、青空テキストから、自動的に後置のタグをおく。落語の文には上付き文字は出てこないでしょうけれど、?!を組み合わせた組文字が1つだけありました。
 手作業でやったっていいのだけれど、一応機能としてもたせました。

 悩んで、サイト依存タグはすべて無視するようにつくりました。第1・2水準をこえる漢字はタグを翻訳して埋め込むことも可能ですが、保留中です。
 依存タグも必要なら変換するのは手間はかかるけど、それほど難しくはありません。将来の課題とします。

------------------------------------------

 青空文庫も、TPPに関連して、著作権保護期間の影響を受けます。50年が70年に延びる、たしかディズニー?…
 江戸川乱歩の著作権切れが近いです。志ん生はあと10年・圓生は15年ですが、20年延びたら私の寿命は超えるでしょうね。

| | コメント (2) | トラックバック (0)

2014年2月 2日 (日)

OCR~青空文庫~html 4

 青空テキストビューワーの作者さんは|なしでフリガナの始まりの位置を見つけていることがわかったので、腰を据えて考えてみました。見つけてそこに自分が|を挿入すれば、そのあとはhtmlのrubyタグにそれぞれ置き換えて完了です。

A:江戸には四宿《ししゅく》 → B:江戸には|四宿《ししゅく》

 これを実現するには、Aを先頭から一文字ずつチェックしながらBにコピー、《を見つけたら漢字の先頭にもどって|をたす…という手順ではできません。
 《を見つけた時点で、Bが「江戸には四宿」になっちゃってます。プログラムでは、「品川」+「心中」=「品川心中」という足し算はできますが、「品川心中」-「心中」=「品川」という引き算ができないからです。

 開始位置はひらがなから漢字に変わる場所なので、Aをチェックするときに、文字の種類を覚えておいて、前の文字の種類と違う場所になるまで、Bには足さずにCに文字を足すようにします。

 Aを先頭から「に」にすすんだ時点で、Bは「」、Cは「江戸」。「に」で文字が変わったので、B+CでB「江戸」、Cを「」にして文字を足し始める。
 「四」で文字種が変わるので、B「江戸」+C「には」=「江戸には」、Cが「」
 「《」で文字種が変わるので、B+「|」+C+「《」=「江戸には|四宿《」…(以下繰り返し)

 この基本的な手順ができたので、もとから「|」がついているときは、違う処理をします。

 ひらがな・カタカナ・漢字だけじゃなく、記号・英数・ギリシャなどの種類を増やせば位置判定が精密になります。

 文字を判定するのに、「あ to ん」という書き方ができるので、「亜 to 熙」で漢字判定をしたらうまくいきません。ファイルはshift-JISでも、内部ではUnicodeだったのでした。
 「ー」(長音)や「ヽ」はひらがなにもカタカナにもなります。「々」は青空では漢字扱い、そんな処理を加えて、基本部分はできあがります。

 あと1回続きます m(_ _)m

| | コメント (2) | トラックバック (0)

2014年1月31日 (金)

OCR~青空文庫~html 3

 今のトピックは、本題のVBプログラムに入れてません。前提の話ばかりをつづけてしまいました。今回も青空リーダーの話題で終始します。

 日本語の文章はやっぱり縦書きで読むほうがしっくりきます。青空文庫自体には円朝の数編しか登録されてませんが、青空文庫リーダーであちこちの落語テキストを縦書き表示されるのが心地よいです。

 いろいろな(無料)リーダーを試してみました。美しいのはAIR草子かな。PageOneもなかなかです。
 ルビの振り方も様々です。アイディアではVirtualbook。青空文庫の《》でフリガナを指定するやり方では、どの文字にフリガナを付けているのか(=フリガナの位置)わかりません。人間なら一目瞭然ですが、機械には手順が必要です。
 そこでこの作者は、《》の直前の文字の底をフリガナの終わりとしているのです。実に姑息な回避だと感心させられたのです。
 しかし、それだと文字数によっては、フリガナの上のほうに妙な間があくのが残念です。

 他のソフトは真面目に漢字の上にあわせたり、漢字の中央に寄せる、漢字の上下にあわせるなどいろいろ工夫していますが、対象漢字をプログラミングで判定しているはずです。AIR草子なぞは、フリガナが長い場合はそれに合わせて漢字の間を広げて調整します。ビューワーはさらに対象漢字が行をまたぐ、長いフリガナが行頭を超えるなど対応が必要です。

 青空文庫も漢字連続のための|タグがあるのですから、ルビにはすべて指定するルールだったならば、プログラムで処理する・エディタの置換、で対処するのは簡単だったのですが…あえて「そうしない」と宣言しているので仕方ないです。


 さて、見やすいというとタブレットの青空ビューワーです。しかし、私のタブレットはWindows8ですので、アプリが少ない!(MSも正念場ですね)

 ストアで見つかるアプリは4つ。1つは有料、1つは青空文庫からの読み込みだけ。気に入ったビューワーは「Nreader」といいます。これが美しくてよみやすい。(現在はNreader2)

 しかし、未完成で、表示できないファイルやフリガナの振り方に問題がありました。フリガナの開始位置判定を”かな以外”としていたので、…にも振り仮名がついてたりしました。<のような記号の縦書きにも不備がありました。

 おせっかい気質が首をもたげて、リクエストを出したところ、ありがたいことに即応してくれました。次にこの場合は?など何度もメールのやり取りをしてルビ処理が完成に近づいていきました。
 傍点など多様な青空タグはまだ対応していないで、スキップします(表示しないということ)。

 このやりとりをする中で、「あれ?自分にも、青空テキストからhtmlへのコンバータができるんじゃね?」と感じたのです。

| | コメント (2) | トラックバック (0)

2014年1月30日 (木)

OCR~青空文庫~html 2

 |入れ作業はわずかの時間で、校正は、(とりあえず)数時間で完了しました。以前のサンプルで得意だと感じた小書き文字「ァィゥ…」の認識はやはり完全とはいきませんでした。ルビのせいで誤認識もいくつかあり、作業前にスキャン時のゴミをよく取り除く必要がよくわかりました。その意味で、ページ番号なども消しておきます。

 ほとぼりの冷めたころにまた校正はしなくてはならないでしょう。

 「真田小僧」にはないのですが、青空テキストとして次の作業は、文字飾りのタグ埋め込みです。円生全集では、傍点と●傍点が使われています。青空タグとしてはこんな感じになります。

てまいの方で、はかいき[#「はかいき」に傍点]がよいと申しまして
かんかんのう[#「かんかんのう」に傍点]を踊らせて

 OCRソフトは傍点などは無視します(どちらかというと消しておいたほうが良い)。テキストファイルにしてから、例えば"はかいき"と傍点部分にマークしておいて、あとでタグに変換するのが楽そうです。上のタグは置換しづらいですよね。

 タグは [#傍点]はかいき[#傍点終わり] こんな形で対象部分を囲むやり方がありますから、最初の"を[#傍点]に、次の"を[#傍点終わり]に置換してやればよいでしょう。""では判別が面倒になりますので、前後が明確な “ ” や ‘ ’ で囲めば置換は簡単です。複数のテキストに対して検索・置換のできる良いソフトもでています。

 htmlファイルは、青空文庫に実際に公開するわけではないので、特に必要なわけじゃないですが、自分の秘密のホームページにアップしておけば、ビューワーのない環境でも見ることができます。例えば公共のPCとか、今じゃゲームマシンでアクセスして見られるわけです。

 テキストさえできてしまえばそんなに難しくはありません。

 やっかいな点は、shift-JISだということです。時代が進んで、ありとあらゆる文字が表示できるようになったのに、JIS第1水準、第2水準という小さなエリアにとどまらざるをえません。機種依存文字を使わないのは当然として、「Unicodeが広く使えるようになっていますが、青空文庫の作業では今のところ、これも使いません」としているはファイルの互換性からでしょう。

 あくまでプレーンなテキストエディタで見ることができるために制限を設けているわけですが、現在のテキストエディタは、文字コードもほぼ間違いなく自動判別しますから、そう遠くない時期に変わるのじゃないかと思っています。
 Unicodeだと、こんなの 〽 (歌記号)も用意されてるんですね。

 自分用には文字コードを替えちゃっても問題はないですし。でも青空の規則に従って書けるようにする工夫をするのも面白いかも。

| | コメント (2) | トラックバック (0)

2014年1月29日 (水)

OCR~青空文庫~html

 結局 e.Typist を買いました。以前に比較レポートを書いたOCRソフトです。バージョンアップ版なので廉価でしたが、使いもしない旧バージョンを一度インストールしないといけません。

 フリガナつきの書籍をスキャンしたとして、OCRをかけてどう処理するか。いくつものフリーのビューワーがある青空テキストにするのは望ましいことでしょう。テキストでは表現しきれないいろいろな組版処理をタグで記述できるのは青空テキストです。ビューワのない環境のためにhtml (xthml)テキストも欲しいところです。(ガラケーなど)

 実際、青空文庫ではその両方の形式で公開してます。そして青空のビューワーの多くがhtmlテキストを縦書きにして読むことができます。

 その線にそって二つのテキストをどう作るかが今回のプログラミングの課題です。

 ただ、青空テキストは問題を抱えています。いまどきshift-JISの文字コードと決められています。だから表示できない文字が今やたくさんあるんです。古いテキストエディタとの互換を考えてのことでしょう、表示できない文字を指定するタグも用意され、ビューワーではちゃんとそのタグを漢字に置き換えてくれるのですが、テキストエディタで校正・編集するときに、タグは邪魔でしかたありません。

 [#「てへん+劣」、第3水準1-84-77] こんなんが文中にあったら… ま、あんまりでてこないですけどね。

 e.Typist は先にも書いたとおり、ルビの認識力はよいと思います。そのルビをテキストにするときに( )で囲んで文に埋め込みます。(ワード形式ではルビのまま)

 この”( )”のままでは、ルビじゃない( )と区別できませんから、設定で青空のルビタグである”《》”の記号で囲むように設定します。

 円生全集の「真田小僧」にOCRをかけたのが下の状態です。(自動で傾き処理をしたり、手作業で誤変換を生む汚れを消したり)

 右側の変換されたテキストの画面に、ルビの画像がずれてはいますが表示されているので、編集が楽です。ルビは小書き文字「ょぅ」では印刷されていないので、原本と見比べたいところですのでその要求を満たしてくれます。

Ocr

 また、ボタンを押すと、左のスキャン画像のほうに判断したテキストを表示してくれます。しかも文字がそろうように行の長さにあわせています。

 この画面であまり位置が合っていないように見えるのは、”「(”の縦横置きの大きさが違うのと、フリガナが入っているからです。その分ずれています。

 校正の段階はフリガナを挿入しないで、校正が終わってからフリガナを挿入するという簡単なことができません。フリガナの設定を変えると、文字変換を初めからやり直すので、また誤変換もやり直してくれるんです…

 ま、なんとか校正が済んだとして、(済んだと見えて1度で終わるためしがありません)、この状態のテキストにフリガナに関してすることが一つあります。漢字連続の一部にフリガナを付けるのに、|タグを埋める作業です。

 まだ青い素人《しろと》浄瑠璃|玄人《くろと》がり
 器量を|そ《ヒョ》んなに

 あと、”霧の|ロンドン警視庁《スコットランドヤード》 ”とカナと漢字にまたがってルビを振るのにも使います。

 今回の「真田小僧」では該当するのは4か所だけでした。それくらいなら手作業も苦になりません。

| | コメント (0) | トラックバック (0)

2013年12月28日 (土)

一括保存完成まぢか

 なんとか二晩、睡眠を削って、一括保存用のツールが使えるところまでできました。TV画面をキャプチャしてボタン一つで保存です。たまたま録画再生ソフトとキャプチャソフトの組み合わせがよくて、オーバーレイの画面をとれる環境があります。それを、楽に活用できるようになりました。

1.クリップボードを監視して、ピクチャーがコピーされたら、データを追加
2.貼り付けたデータはサムネイルの形で並べて表示する
3.ワンアクションで、データに連番を振って保存する

 というメインの機能と、

4.拡大表示

 までです。1のクリップボード監視は複雑なコードですが、ほぼそのまま使えるものを載せてくれてるサイトがあります。そこから持ってきて組み込みました。有能な人に感謝です。
 データの削除は、ごりごり書くのが面倒で、代わりにチェックして保存しない選択をつけました。

 スキャナからの入力は、サンプルを探すうちに簡単な例が見つからなかったことと、高性能なフリーソフトが既になることがわかりました。使う場面は別でしょうから、ソフトを使い分ければいいと思い直しました。ファイル読み込みも同じ理由で実装しないことに決めました。
Clipsoft

 あとはアイコンをいくつか作れば、一人前です。でも自分が使う分には不都合ありません。
 それに、これで配信(ファイルダウンロードでなくて、ブラウザでみるようになってました)されたコミック「風雲児たち」のキャプチャは締め切りに間に合います。

 昨日届いて手を付けてない最新刊、23巻を読み、我慢できずに買った「パシフィック・リム」のブルーレイも鑑賞しても大丈夫です。

 …と思って筆をおいたら、さっそくバグがあり、また1日を費やしてしまいました。たくさんデータを貼り付けるとスクロールバーが現れるのですが、スクロールでメニューごと上に消えていくという、お間抜けなツールだったんです。
 もうひとつ、スクロールしたあと貼り付けると場所がずれる。なんか情けない出来栄えです。ほとんどの時間を対策の検索でつぶしてしてしまいました。

| | コメント (0) | トラックバック (0)

2013年12月26日 (木)

一括保存をトライ

 うーん。やみくもに探し回っていても見つかりそうもないので、ちょっとソフトを作ってみることにしました。

 というのは、明日「風雲児たち」の新刊が届くのと、掲載誌が発売になるので立ち読みをします。今度の掲載誌は、「風雲児たち 幕末編」連載150回記念で、何か載るかもしれません。価値がありそうなら、禁を破って雑誌か電子版を買うことにします。

 それと同時に、各電子コミック販売サイトで、「風雲児たち」「風雲児たち 幕末編」の何冊かを期間限定で無料ダウンロードできるキャンペーンが行われます。きっと期限が来たら読めなくなるデータが配られるのでしょう。この機会に読者がどばっと増えてくれるといいのですが。
 単行本自体は持っているので、電子版を買うつもりはありませんが、この無料のうちにキャプチャしてjpgで保存するつもりでいます。しても何の足しになるかはわからないのですが…。

 どうせ作るなら、その期間に間に合って使えるようになれば。

 仕様としては、
1.クリップボードを監視して、ピクチャーがコピーされたら、データを貼り付けて追加。<---まずは手動で作ります。
2.貼り付けたデータはサムネイルの形で並べて表示する。
3.ワンアクションで、データに連番を振って保存する。

 付属機能として
4.サムネールを指定して拡大表示できる。
5.サムネールとデータは削除できる。
6.編集機能を持たせるつもりはないので、他のソフトで編集してクリップボード経由で戻す。
7.画像ファイルを読み込むこともできる。
8.Twainでスキャナからもイメージを得る。<---これが最難関な予想

 なんという感じで予定していて、どこまで実装できるかも不明です。ネットでサンプルコードを探して組み上げていくことになるでしょう。

 この年末年始は、あまり落語関係の特集はないみたいです。落語研究会を上・中・下でやるくらいですか。ソフトを作る間はサブ画面で再生してみることはできます。借りている本はしばらく積んだままになります。ブログの記事にする時間はないかも。

| | コメント (2) | トラックバック (0)

2013年9月29日 (日)

喋りだし記録補助のソフト

 時々。ソフトの改良の作業をします。昨日のバグフィックスは別のソフトから発見したのです。

 ループ再生のソフトを改造していて、それが共通のルーチンを使っているので見つかりました。そちらのソフトはwindows media player SDKを使っているので、wmaのスピードを変えられます。

 今回は、そいつに今までできなかったサウンドの長さを取る機能を実装しました。mciコマンド文字列送信という古ーいDLLを利用しました。wmp SDKにないからしょうがない。

 これで、バランス設定さえができればSoundCompareもwmp SDK に書き換えです。SDKはバランス設定のメソッドを備えているはずなのに、設定してもぜんぜん効かないんです。

 …8月半ばから、このあたりで堂々巡り。とりあえず改造の目的は達して、ループ再生で喋りだしの記録作業に戻ります。
 つい夢中で、記録という目的を果たすのに、ソフト改造という余分な時間がかかり、他の作業は後回しにしちゃってました。今の遠回りが将来の近道になるようにと願ってのことですが。

| | コメント (0) | トラックバック (0)

2013年9月28日 (土)

恥ずかしながら

 サウンド比較ソフト、Soundcompareのバグフィックスです。

 サウンドファイルをD&Dしたときに、ファイル拡張子をチェックしているのですが、拡張子が大文字の時に誤ってはじいておりました。

 よろしかったら、懲りずに左のリンクからダウンロードしてください。製品バージョン・ファイルバージョンともに1.2.1.0に変わっています。

 ダウンロードしようとすると、「一般的にダウンロードされておらず、危険を及ぼす可能性があります。」と、私のchromeはあいかわらず警告してくれます。

 そりゃそうですよね。こんなニッチな用途だから、自作を余儀なくされたわけです。でもって、自分で気づくしかないと…

| | コメント (4) | トラックバック (0)

2013年4月28日 (日)

スリープ対応

 久々にソースファイルを開けてみてびっくりしました。スリープに対処するサンプルコードが貼り付いていました。必要性はわかっていたけど使い方がわからず放置してあった…orz

 ちょっと不安だったのは、このソフトでスタンバイを止めてしまって、終了時に回復したとして、他のソフトのスタンバイに影響しないかということでした。録画中にスタンバイし始めたらやばい。

 MSDNを読むと、「システムのアイドルタイマがリセットされるだけ」の方法があるのがわかりました。これなら行儀の悪いソフトにならないで済みそうです。
 思ったより簡単に実装完了。

 いろいろ記事を読むと、スクリーンセーバーでは条件付きとか、システムをフックするやり方やダミーのマウスインプットを送る方法とかいろいろなことがあるようです。ちゃんとVB6のころから知られたことのようでしたが、必要となるまでは気づかないのが素人です。

 ついでに、二つのプレーヤーの再生・停止ボタンをトグルに作り替えました。

 さて、ニーズの限られたニッチなソフトですが、左のペインからダウンロードできるようにしました。悲しいかな、セキュリティソフトが警告を発します。

          *                  *                   *                 *

 スリープつながりで。

 Radiko録音ソフトのRadikaで、このところ続けてスタンバイ復帰からの録音に失敗します。どうも復帰してから10分弱サーバにつながらないようで、そのあと録音をはじめます。ネットでも情報がないので、自分の環境のせいでしょう。録音開始を10分早めるか、別なソフトで10分早く起動しておくことで対応できそうな気はしますが。

| | コメント (4) | トラックバック (0)