スキャンされた本のページが数千ページあります。各ページは個別にJPGとして保存されます。文章は明確ですが、フォントはさまざまで、ページには写真やイラストが含まれています。
各JPGファイルに表示されるすべての単語のリストを作成する必要があります。表示される単語をリストした画像をスキャンするためのコマンドラインツールはありますか?完全なスキャンが必要なわけではなく、単なる見積もりです。
スキャンされた本のページが数千ページあります。各ページは個別にJPGとして保存されます。文章は明確ですが、フォントはさまざまで、ページには写真やイラストが含まれています。
各JPGファイルに表示されるすべての単語のリストを作成する必要があります。表示される単語をリストした画像をスキャンするためのコマンドラインツールはありますか?完全なスキャンが必要なわけではなく、単なる見積もりです。
回答:
インストールしimagemagick
、pdftotext
(という名前のパッケージで見つかったpoppler-utils
いくつかのパッケージマネージャ内)とocrmypdf。後者は高速で(ocrは大量のCPUを使用し、すべてのコアを使用するように構成されています)、オープンソースで、頻繁に更新されるOCRソフトウェアです。このアプローチは、単に単語にラベルを付けるのではなく、実際に各単語に文字列を割り当てようとするため、過剰すぎる可能性がありますが、一般的に良い使いやすいオープンソースOCRソフトウェアを見つけるのに苦労しました。次に、すべてのJPGを保存したディレクトリで:
$ convert *.jpg pictures.pdf
$ ocrmypdf pictures.pdf scanned.pdf
$ pdftotext scanned.pdf scanned.txt
$ wc -w scanned.txt
ocrmypdf
私の日を作った
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にあります。
Linuxユーザーの場合、Calibreを使用してpdfをdocxに変換するのと同様に機能しません。https://calibre-ebook.com/download_linux
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