スキップしてメイン コンテンツに移動

OCRの行の間から見る段落検出について その2

統計量に基づく手法

行送りと行間

行送りと行間の定義については前回の通りとし、実際にどちらを基準とするか。
人間が目視で判断する場合、行と行の距離を追っていると言うよりは行と行の隙間(空白)の大きさを元に判断しているように思われる。したがって、直感的には"行間"が基準に適しているように思うが…。

以下はいずれもとあるゲーム画面の文章について"文字の高さ"、"行間"、"行送り"を記したもので、実際に段落の境界が存在する行を青くハイライトしている。
一見すると"行間"にしても"行送り"にしても段落境界で前後と値が大きく離れており、前後との差から十分に段落境界を判断できるように見える。一方でPCOT界隈では行間狭すぎ問題なる問題があるように行間は0はおろかマイナスの値すら取り得る。そのため、比率のようなものでしきい値を設定する場合には注意が必要である。



また、上の図では"行間"が0, 1, 4 | 9, 12, 18となっており、9以上は段落境界である。しかしながら、0と1が多い中での4は一見すると段落境界のようにも思える。実際には、たまたまディセンダがない行の影響を受けて結果的に4と"行間"が広くなっているだけであり、段落境界ではない。一方でこの影響は"行送り"には大きく出ていない点に着目する必要がある。理由は行送りはToptoTopで求めているためディセンダの影響を受けないためである。もちろんアセンダがない場合は行送りであっても影響を受けることになるが、行間に比べて行送りは値が大きいためその影響度合いは相対的に下がる。つまるところ、"行間"、"行送り"ともに基準となるポテンシャルはあるが"行間"はアセンダ・ディセンダの影響を受けやすく、また非常に小さな値(あるいは負)となる場合があるため"行送り"の方が扱いやすいと言えそうだ。

統計量

統計量と書くとなにやら大仰であるが、ここで取り扱うのは平均値、中央値、最頻値のことである。単にそれらの値をもとにしきい値を設定しそれ以上の値であれば段落境界が存在すると判断する。
これがやってみると意外とうまくいく。
前提として多くの対象は以下のルールに従っているからだと思われる。
  • 大抵の行は段落を構成する文章の一部である
  • 時折、見出しなどが存在する
  • 同一段落内の行間、行送りはほとんど変わらない
どの統計量を使ってもそれなりにうまく動くが時折段落間の空行がとてつもなく大きいシチュエーションもあり得るので平均値よりは中央値かなぁと思うくらい。
ただ、前述の表を見ると分かるように同一段落の行送りはほとんど変わらないため最頻値も十分有効であり、現実的な値だと思う。安心して使いたいならすべての値に+1して幅を持たせるなどすると良い。

対象とするタスク次第ではあるが、実際のところ単純なタスクでは複数のスタイルが混在するようなことがない。したがって、最も多く登場する値が段落を構成する文章の値であり、それから外れる場合は段落境界という構図が成り立つので単純でありながら有効的な方法である。


コメント

このブログの人気の投稿

KoeMill V.0.9.0.0 リリース

KoeMillのV.0.9.0.0をリリース KoeMillは、音声認識による文字起こしを行うソフトウェアです。音声認識モデルにはWhisperが採用されており動画や音声から自動的に高品質な文字起こしができるため、煩雑な手作業を省くことができます。 オフラインで動作するため、ネットワークの遅延などによる遅れやプライバシーに関する懸念もありません。また、GPUを利用することで高速な処理を実現します。 ダウンロードページ

CapCap V.0.9.2.7 リリース

CapCapのV.0.9.2.7をリリース 主な変更内容 HTTP POST設定でヘッダの設定に対応 HTTP POST設定でJSONのオブジェクトおよび配列に対応 HTTP POST設定を大項目ごとに折りたためる機能に対応 サンプルプリセット(ChatGPT API)を追加 プリセット複製時に複製先の変更が複製元に及んでいた不具合を修正 HTTP POST設定 新たにリクエストヘッダを設定できるようになりました。これによりAuthorizationによる認証などヘッダが必要なAPIにも対応できるようになりました。合わせて、これまで設定することが出来なかったJSON ObjectおよびArrayについても設定できるようになりました。 ChatGPT APIについて サンプルプリセットを追加しました。HTTP POSTのヘッダおよびJSON ArrayとObjectに対応したため、その対応例となります。 継続的に使おうとすると費用が発生することになるので、無料枠が残っている間に遊んでもらえると幸いです。 DLページ: Home

CapCap V0.9.2.5 リリース

CapCapのV0.9.2.5をリリース 主な変更内容 段落検出機能を追加 字幕モードの名称を変更(Readability -> Text, Layout -> Item) 段落検出 テキストの行同士の距離をもとに段落を検出することが出来るようになりました。 段落の検出および段落間への空行挿入が行なえます。 これまではテキストをひと繋がりの文章として認識していましたが、段落ごとに分離されることで可読性の向上が見込めます。 文章に対して段落が多い場合や段落が2行からなる場合などには精度が落ちる傾向にあります。また実験的機能の側面があるため問題点等あればご報告いただけると助かります。 DLページ: Home