1

圧縮されていないbitonalTIFドキュメント画像がたくさんあります。それらのすべては、中央に透かしがあります。OCRを実行すると、透かしと重なるテキストが認識されません。ある種のクリーンアップを適用してこれらの透かしを削除し、欠落しているテキストを認識できるかどうかを確認しようとしています。

繰り返しになりますが、画像は白黒ですが、透かしを見ると、透かしの文字が通常のテキストよりも「密度が低い」黒と白のピクセルのパターンがあるため、灰色で表示されます。同時に、透かし文字は非常に大きく、通常のテキストよりもはるかに大きくなります。

やや似た画像の例はこれです(これは色であり、私の場合の透かし文字ははるかに太くて大きいです。私の透かしもはるかに短いです:長さはわずか3〜4文字です)

境界線が透かしよりも通常「密」であるため「より黒く」見えることを除いて、画像から大きな黒い境界線を削除するのと同様のクリーンアップフィルターがあるようです。

GIMP、ImageMagick、IrfanViewの3つのツールを自由に使用できます。私を助けるかもしれないこれらのツールのサブセットの特定の機能をお勧めできますか?

4

1 に答える 1

3

コントラストなどで遊んでも効果はありませんでしたが、別の方法を見つけました。上記のように、通常のテキストは透かしのテキストよりもはるかに「密度が高い」ため、通常の黒のピクセルは透かしの黒のピクセルよりも周囲の黒のピクセルが多くなります。そこで、単純なウィンドウベースのフィルタリングおよびしきい値処理アルゴリズムを考案しました。

5X5ウィンドウを使用して、Matlabでこれを行った方法は次のとおりです。

im=imread('imageWithWmark.tif');
imInv = ~im;
nr=size(imInv,1);
nc=size(imInv,2);

d = 2;  % for 5X5 window
counts = zeros(nr,nc);
for rr = d+1 : nr-d-1
for cc = d+1 : nc-d-1
    counts(rr,cc) = nnz(imInv(rr-d:rr+d,cc-d:cc+d));
end
end

thresh=10;  % 10 out of 25 -- the larger the thresh the thinner the resulting letters are
imThresh = (counts>=thresh) & imInv;
imwrite(~imThresh,sprintf('Thresh_%d.tif',thresh),'Compression','none','Resolution',300);

もちろん、ウィンドウのサイズ、しきい値、およびその他のパラメーターは、ページ上の通常のテキストのパラメーター(文字の大きい/小さい、厚い/薄いなど)によって異なりますが、この初期バージョンでもかなりうまく機能しました。

于 2013-03-08T21:14:06.327 に答える