4

スキャンしたドキュメントのスマートなトリミング

最近、古書・写本の保存プロジェクトを引き継ぎました。それらは膨大な量で、ほぼ10,000ページです。自動ブックスキャナーでスキャンできる状態ではなかったので、ポータブルスキャナーで手動でスキャンする必要がありました。

Photoshopで編集を開始すると、実際の問題が発生します。それらはすべて基本的にドキュメント(JPG形式)であり、これらのドキュメントには画像がまったく含まれていないことに注意してください。それらは異なる言語(オリヤー語)であり、近い将来利用できるOCRソフトウェアはないと確信しています。(ある場合はお知らせください。)

これらの画像(ドキュメント)をきれいでエレガントに見せるために、トリミング、配置、コントラストの少し上げ、消しゴムなどで不要な部分をきれいにする必要があります。Photoshopでこれらのプロセスのほとんどを自動化することができましたが、トリミングが行き詰まっています。ソフトウェアがそのimg(doc)の特定の領域にあるテキストまたはコンテンツの存在を調整できないため、トリミングを自動化できません。与えられた値をトリミングに適用するだけです。

このトリミングプロセスを自動化するソリューションが必要です。私はこれについてのアイデアを考え出しました。それが実装するのに十分実用的であるかどうかはわかりません。私が知る限り、この種のことを行うソフトウェアは市場に存在しません。

これに対する可能な解決策:これは、ツールが画像内のテキストの存在を認識し(すべてが通常のドキュメント画像であり、画像がなく、パターンが単なる長方形であるため、それほど重要ではありません)、それをトリミングできる場合に可能になる可能性があります余白なしでドキュメント画像を出力できるように、各側からそれらのテキストの境界から右に出ます。この後、余白に空白を追加したり、コントラストと色を微調整して読みやすくしたりするなど、Photoshopを使用して残りのタスクを自動化できます。

こちらがギャラリーへのアルバムリンクです。役立つ場合は、さらにサンプル画像を投稿できます。お知らせください。

http://imageshack.us/g/1/9800204/

上記のリンクから入手できる画像のより大きなサンプルからの一例を次に示します。

より大きなセットの一例...

4

3 に答える 3

11

tinypicのサンプルを使用して、 元のスキャン

ImageMagickを使用して、次の行に沿ってアルゴリズムを構築します。

  1. コントラスト-元の画像を引き伸ばす

    黒点の1%と白点の10%の値は、ほぼ正しいように見えます。

    指示:

    convert                               \
       http://i46.tinypic.com/21lppac.jpg \
      -contrast-stretch 1%x10%            \
       contrast-stretched.jpg   
    

    結果: コントラストストレッチ結果

  2. いくつかの境界ピクセルを削り取り、そこにある暗いスキャンアーティファクトを取り除きます

    各エッジの30ピクセルの値はほぼ正しいようです。

    指示:

    convert                   \
       contrast-stretched.jpg \
      -shave 30x30            \
       shaved.jpg   
    

    結果: 各エッジを30ピクセル削りました

  3. 画像のスペックルノイズを除去します

    ここにこれ以上のパラメータはありません。より良い結果を得るには、プロセスを3回繰り返します。

    指示:

    convert       \
       shaved.jpg \
      -despeckle  \
      -despeckle  \
      -despeckle  \
       despeckled.jpg
    

    結果: 斑点のない画像

  4. しきい値を適用して、すべてのピクセルを黒または白にします

    およそ50%の値はほぼ正しいようです。

    指示:

    convert           \
       despeckled.jpg \
      -threshold 50%  \
       b+w.jpg
    

    結果: 黒+白の画像

  5. 削り取ったピクセルを再度追加します

    元の画像がピクセルidentify -format '%Wx%H' 21lppac.jpgの寸法を持っていることを確立して使用します。1536x835

    指示:

    convert            \
       b+w.jpg         \
      -gravity center  \
      -extent 1536x835 \
       big-b+w.jpg
    

    結果:( オリジナルサイズ この手順はオプションでした。目的は、元の画像のサイズに戻すことです。これは、ここから移動して結果を元の画像などにオーバーレイする場合に必要になる場合があります...)

  6. 画像を歪ませない

    ここでも40%(デフォルト)のしきい値が機能しているようです。

    指示:

    convert        \
       big-b+w.jpg \
      -deskew 40%  \
       deskewed.jpg
    

    結果: デスキュー画像

  7. 純粋に白いピクセルのすべての行と列を各エッジから削除します

    -trimこれは、演算子を使用するだけで実現できます。

    指示:

    convert         \
       deskewed.jpg \
      -trim         \
       trimmmed.jpg
    

    結果: トリミングされた画像

ご覧のとおり、結果はまだ完全ではありません。

  • 画像の下端にランダムなアーティファクトが残っており、

  • 他の最小限のアーティファクトのため、最終的なトリミングではエッジからすべての空白が削除されませんでした。

  • また、歪み(の一部)を修正するために、画像に歪み補正を適用しようとはしませんでした。( 「パースペクティブプロジェクションディストーションImageMagickを理解する」へのこの回答を見ると、それが何を達成できるかについてのアイデアを得ることができます。)

もちろん、各ステップで使用されるいくつかのパラメーターを試してみると、さらに良い結果を簡単に得ることができます。

そしてもちろん、各コマンドをシェルまたはバッチスクリプトに入れることで、このプロセスを簡単に自動化できます。


アップデート

さて、これが変形を大まかに修正するための歪みです。

*指示:

convert                                                                         \
   trimmmed.jpg                                                                 \
  -distort perspective '0,0 0,0  1300,0 1300,0  0,720 0,720  1300,720 1300,770' \
   distort.jpg

結果:(下にあるオリジナルをもう一度使用すると、視覚的な直接比較がより簡単になります) 歪んでいない画像 元の画像

画像にはバレルのような歪みがまだ残っていますが、これはおそらく-barrelinverse演算子を適用することで取り除くことができます。フィッティングパラメータを見つける必要があります。

于 2012-10-09T10:21:13.113 に答える
2

背景からテキストをセグメント化する1つの手法は、線幅変換です。Stack Overflowには、これを含むいくつかの投稿があります。

ストローク幅変換(SWT)の実装(Java、C#...)

ウィキペディアのページに表示されているテキストが書かれたオリヤー語を表すものである場合、SWT(またはそのカスタマイズされたバージョン)がうまく機能すると確信しています。画像を確認した後でも手動で微調整する必要がある場合がありますが、SWTベースの方法で多くの作業を行うことができます。

SWTはすべてのストロークを識別するわけではありませんが、ストローク(および文字)が占めるスペースの寸法を適切に見積もることができます。最も簡単な方法

あなたに役立つかもしれない新しいアルゴリズムは、「シームカービング」などの「コンテンツ認識サイズ変更」アルゴリズムです。これは、情報量の少ないコンテンツのピクセル(背景ピクセルなど)のパスを自動的に削除します。シームカービングに関するビデオは次のとおりです。

http://www.youtube.com/watch?v=qadw0BRKeMk

GIMP用のシームカービングプラグイン(「液体サイズ変更」)があります:http: //liquidrescale.wikidot.com/

このブログ投稿は、Photoshopのプラグインを報告しています: http ://wordpress.brainfight.com/195/photoshop-cs5-content-aware-aka-seam-carving-aka-liquid-resize-fun-marketing/

OCR技術の概要については、Cheriet、Kharma、Liu、およびSuenによる本CharacterRecogntionSystemsをお勧めします。その本の参照はあなたをかなり長い間忙しくさせるかもしれません。

http://www.amazon.com/Character-Recognition-Systems-Students-Practitioners/dp/0471415707

最後に、LinkedInの光学式文字認識グループに参加して、より具体的な質問を投稿することを検討してください。業界には、詳細に質問に答えることができる学者、研究者、エンジニアがいます。また、オリヤー語に類似した言語のOCRを開発しているインドの研究者と、電子メールで連絡できる場合もあります。まだソフトウェア。

于 2012-10-08T03:31:35.503 に答える
2

オープンソースのDjVu->PDFコンバーターで、多くの「スマートクロッピング」の問題に対処しました。コンバーターを使用すると、DjVuの代わりにスキャンされた画像のセットをロードし(OpenコマンドでShiftキーを押すだけ)、PDFの代わりに結果の画像のセットを出力することもできます。

これは、Javaで記述された無料のクロスプラットフォームGUIツールです。

画像コンバーター、スマートクロップおよびデスキュー

于 2012-11-05T16:29:15.827 に答える