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

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

隣り合う情報を使った手法

複数のスタイルに対応できないか

前回述べた方法は段落はすべて共通のスタイルであることを仮定している。しかしながら複数のスタイルが混在する場合が存在しないわけではないのでどうにか対応出来ないか…。

前回確認したデータからは以下のことがわかる。
  • 段落境界で値の変動がある
  • 同一段落内で"行送り"はほぼ変わらない

同一段落内で値がほぼ変わらないのは同一スタイルであるためである。したがって、複数スタイルが存在する場合にあっても同一段落内で値が変わらなければ、その変動から段落境界は見つけ出せそうという感触はある。

必須行数のはなし

はい、OK。じゃあ、上から順に走査していって変動があったところを段落境界とすればいいね。
となれば良いがやってみると意外な形で失敗する。

行送りによる誤判定
段落境界の前後で行送りがほぼ等しいなど、段落境界をまたぐところで誤判定が生じることがある。
それというのも段落境界を行の空間的距離から推測するにあたって少なくとも3行は必要となる。1個だけだとそれが大きめの行送りかあるいは段落境界なのか比較できる対象がなく判定ができないためである。
順に捜査していく場合、基準となる行はもっともらしいものである必要があるのだが、段落境界毎にそれはリセットされる必要があり、どうにかしてもっともらしい基準を見つける方法が必要になる。

どうやって基準を見つけるか

対象をデータテキストに限った方法ではあるが、隣接行の行送りの値が近い場合にそれを基準とするというアイデアがある。要するに段落境界付近の値は使用せずに段落の中心から先頭・末尾に向かって走査していくような方法である。
ただし、依然として段落境界でもっともらしい基準として誤って採用されることがあるという問題は残っている。

どう実現するか

色々やってみてそれらしく動いたのは以下のような手順である。
  1. もっともらしい基準値を見つける
  2. もっともらしい基準から段落境界に出くわすまで下に走査する
  3. もっともらしい基準から段落境界に出くわすまで上に走査する
  4. 統計量を基準値として段落検出する
そう、最終的に統計量を使ってしまっているのである。全くもって遺憾。
それというのももっともらしい基準値を見つけられない場合などもあるため、最終的には何か理由をつけて判定する必要があるのである。
また、2と3の走査ではそれぞれの検出結果で以前の結果を上書きするようにしている。したがって、1のもっともらしい基準値を見つける際に段落境界が誤検出された場合でも、本当の段落の走査処理によって正しい段落境界が設定され誤検出を打ち消すようにしている。

所感

ここまでやって段落ごとにスタイルが異なっていても段落検出できるようになるが、実際に段落ごとにスタイルが異なるような文章に会うことはそう多くなく、こねくり回した割には大抵のタスクは統計量だけで十分な場合が多いと感じた。
また、必須行数の兼ね合いで一つの段落が3行以上で構成されていないとうまく動作しないところも課題である。


コメント

このブログの人気の投稿

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