web-dev-qa-db-ja.com

LinuxのコマンドラインからOCRを使用する方法

スキャンした本のページが数千ページあります。各ページはJPGとして個別に保存されます。文章は明確ですが、フォントはさまざまで、ページには写真やイラストが含まれています。

各JPGファイルに表示されるすべての単語のリストを作成する必要があります。表示される単語を一覧表示する画像をスキャンするためのコマンドラインツールはありますか?完全なスキャンを行う必要はなく、見積もりを行うだけです。

33
Village

tesseract はおそらくここで最もよく使用されるソリューションです。ほとんどのパッケージリポジトリで利用できます。

Sudo apt install tesseract-ocr

と使用できます

tesseract input.png out.txt
29
Nico Schlömer

imagemagickpdftotextpoppler-utilsというパッケージにあるパッケージマネージャー内にあります)と ocrmypdf をインストールします。後者は高速で(ocrは多くのCPUを必要とし、すべてのコアを使用するように構成されています)、オープンソースで頻繁に更新されるOCRソフトウェアです。このアプローチは、Wordにラベルを付けるだけでなく、実際に各Wordに文字列を割り当てようとするので、やりすぎかもしれませんが、オープンソースの一般的なOCRソフトウェアを見つけるのに苦労しました。次に、すべてのJPGを保存したディレクトリで:

$ convert *.jpg pictures.pdf
$ ocrmypdf pictures.pdf scanned.pdf
$ pdftotext scanned.pdf scanned.txt
$ wc -w scanned.txt
19
rien333

Image file.pngを480%アップスケールし、グレースケールに変更し、白で埋め戻し、シャープにしてから、tesseract OCRを使用して抽出します。非常に大きなフォントと黒地に白を除いて、ほとんどの場合私にとってはうまくいきます。フォントが非常に大きい場合は、200%または300%だけアップスケールします。

 convert -colorspace gray -fill white  -resize 480%  -sharpen 0x1  file.png file.jpg
 tesseract file.jpg file

結果はfile.txtにあります。

9
Eamonn Kenny

TL; DR

for i in /path_to/*.jpg;do ./myocr.sh $i $(basename $i .jpg);done

#!/bin/bash
# PROGRAM=myocr.sh
if [ "$1" ] && [ -e "$1" ]; then
  TMPF=$(mktemp myocr.sh.XXXXXXXX.tif)
  DEST="$2"
  if [ ! "$DEST" ]; then
    DEST="${1%.*}.txt"
    if [ -e "$DEST" ]; then
      echo "$DEST already exists; please provide a new textfile name" >&2
      exit 1
    fi
  fi
  /usr/bin/convert "$1" -colorspace Gray -depth 8 -resample 200x200 -flatten -alpha Off $TMPF \
  && /usr/bin/tesseract $TMPF "$DEST"
  EX=$?
  /bin/rm -f $TMPF
  [ $EX -eq 0 ] && [ "$TERM" ] && echo "created $DEST"
  exit $EX
else
  echo "Usage: $0 imagefile [textfile]" >&2
  echo " creates a plain text file with the text found in imagefile" >&2
  exit 1
fi

ソース: https://help.ubuntu.com/community/OCR

0
Antonio Feitosa

Linuxユーザーの場合、Calibreを使用してpdfをdocxに変換することほどうまく機能しません。 https://calibre-ebook.com/download_linux

0
Larry Bradley