5

tesseract-OCRエンジンを使用してテキストを抽出する前に、ImageMagickサービスを使用してレシート画像を前処理しています。領収書の背景を削除する必要があります。ここで境界線を削除するためにマスキングを行いました。しかし、領収書のマスクを作成できません。

ただし、レシート画像から影を取り除こうとしました。

初期画像(レシート例)

ここに画像の説明を入力

convert input.png -colorspace gray \
      \( +clone -blur 0x2 \) +swap -compose divide -composite \
      -linear-stretch 5%x0%   photocopy.png

コードを適用した後:

ここに画像の説明を入力

以下のコードを試して、白を除くすべての色を黒にしましたが、これは photocopy.png の背景を完全に黒くしているようには見えません。

convert receipt.jpg -fill black -fuzz 20% +opaque "#ffffff" black_border.jpg

ここに画像の説明を入力

レシート画像の枠線を消す方法はありますか?または、画像から何らかの種類のマスクを作成しますか? 注:背景が異なる複数の画像のノイズと境界線を削除する必要があります。

4

2 に答える 2

1

あなたの質問に答えるために

「領収書の画像の境界線を取り除く方法はありますか? または、画像から何らかのマスクを作成する方法はありますか?

次のコマンド (独自のコードに基づく) は、適用可能なマスクの寸法を取得するために使用できる画像を作成します。

convert                     \
   origscan.jpg             \
  -colorspace gray          \
   \( +clone 0 -blur 0x2 \) \
  +swap                     \
  -compose divide           \
  -composite                \
  -linear-stretch 5%x0%     \
  -threshold 5%             \
  -trim                     \
   mask-image.png

そのマスク イメージを使用して、1 つのコマンドでモノクロ (黒) マスクを作成できます。

convert                     \
   origscan.jpg             \
  -colorspace gray          \
   \( +clone 0 -blur 0x2 \) \
  +swap                     \
  -compose divide           \
  -composite                \
  -linear-stretch 5%x0%     \
  -threshold 5%             \
   \(                       \
      -clone 0              \
      -fill '#000000'       \
      -colorize 100         \
   \)                       \
  -delete 0                 \
   black-mask.png

上記の 2 つのコマンドの結果を並べて示します。

 

だけでなくidentify、 のジオメトリを取得するために使用できます。mask-image.pngblack-mask.png

identify -format "%g\n" *mask*.png
  2322x4128+366+144
  2322x4128+366+144

したがって、イメージ キャンバスは幅 2322 ピクセル、高さ 4128 ピクセルです。もちろん、両方の画像の目に見える部分は、私たちの-trim操作に従って小さくなっています。(この+366+144部分は、元の画像の左上隅からの水平/垂直オフセットを示します。)


追加コメント:以上のことを踏まえて、領収書からより良い写真を作成することを検討する必要があります。(高さ 4128 ピクセルの画像を作成できるカメラをお持ちの場合、これは問題になりません。おっしゃるように、処理するレシートが非常に多い場合は、小さなプラテン ガラスを購入することをお勧めします。撮影時に紙をまっすぐにするために紙の上に置きます...)

于 2015-01-06T14:34:53.330 に答える