Linux'ta komut satırından OCR nasıl kullanılır?


30

Binlerce sayfa taranmış kitap sayfam var. Her sayfa ayrı ayrı JPG olarak kaydedilir. Yazı net, ancak yazı tipleri değişkendir ve sayfalarda resim ve çizimler bulunur.

Her JPG dosyasında görünen kelimelerin bir listesini oluşturmam gerekiyor. Görünen kelimeleri listeleyen bir resmi taramak için bir komut satırı aracı var mı? Mükemmel bir taramalı olması gerekmiyor, sadece bir tahmin.


github.com/tesseract-ocr/tesseract/wiki/Command-Line-Usage - ocrmypdf'in arkasındaki motor budur ve genel olarak kurulumunuzda daha az adım atmanıza izin verir.
oakad


2
yinelenen biraz eski, yeni şeyler olabilir. Ben oyu açık bırakacağım.
Archemar

Yanıtlar:


25

tesseract muhtemelen buradaki en çok kullanılan çözümdür. Çoğu paket havuzunda mevcuttur, örn.

sudo apt install tesseract-ocr

ve ile kullanılabilir

tesseract input.png out.txt

19

Kurulum imagemagick, pdftotext( poppler-utilsbazı paket yöneticilerinin adında bir paketin içinde bulunur) ve ocrmypdf . Sonuncusu hızlıdır (ocr çok fazla cpu alır ve tüm çekirdeğinizi kullanacak şekilde yapılandırılmıştır), açık kaynaklı ve sıklıkla güncellenen bir OCR yazılımıdır. Bu yaklaşım, muhtemelen sadece bir kelimeyi etiketlemek yerine her kelimeye bir dize atamaya çalıştığı için fazlaca bilinir, ancak genel olarak açık kaynak kodlu OCR yazılımını kullanmak için iyi ve kolay kullanım konusunda çok sıkıntı yaşadım. Ardından, tüm JPG’lerinizi kaydettiğiniz dizinde:

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

2
fwiw, bu aşağıda belirtilen Tesseract'ı kullanır.
exic

ocrmypdfgünümü yaptım
Her Gün Astronot

Önce pdf dönüştürmek zorunda olan fikri sadece saçma. neden sadece bir jpg dosyası girip bir metin çıkaramıyorum?
Michael,

Sizin için tüm komut satırlarını yapmak için bir bash dosyası kullanabilirsiniz.
projetmbc

7

Görüntü dosyası.png% 480 artarak, gri skala olarak değiştirin, beyazla doldurun, keskinleştirin ve ardından OCR tesseract kullanarak çıkarın. Çok büyük yazı tipleri ve siyah üzerine beyaz hariç, benim için çoğu zaman iyi çalışıyor. Yazı tipleri çok büyükse, yalnızca% 200 veya% 300 lüks.

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

Sonuç file.txt içindedir.


Bu benim için küçük yazı tipi boyutunda küçük bir ingilizce olmayan metin parçası ile çalıştı. Şaşırtıcı.
Avio,


0

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

Kaynak: https://help.ubuntu.com/community/OCR

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.