Bagaimana cara menggunakan OCR dari baris perintah di Linux?


30

Saya memiliki beberapa ribu halaman halaman buku yang dipindai. Setiap halaman disimpan secara individual sebagai JPG. Tulisannya jelas, tetapi fontnya bervariasi, dan halaman-halamannya memuat gambar dan ilustrasi.

Saya perlu membuat daftar semua kata yang muncul di setiap file JPG. Apakah ada alat baris perintah untuk memindai gambar yang mencantumkan kata-kata yang muncul? Tidak perlu memiliki pemindaian yang sempurna, hanya perkiraan.


github.com/tesseract-ocr/tesseract/wiki/Command-Line-Usage - itulah mesin di balik ocrmypdf, dan, secara umum, akan memungkinkan Anda memiliki lebih sedikit langkah dalam pengaturan Anda.
oakad

4
Kemungkinan duplikat OCR pada sistem Linux
curiousdannii

2
duplikat agak lama, hal-hal baru mungkin ada. Saya akan memilih cuti terbuka.
Archemar

Jawaban:


25

tesseract mungkin adalah solusi yang paling banyak digunakan di sini. Ini tersedia di sebagian besar repositori paket, misalnya,

sudo apt install tesseract-ocr

dan dapat digunakan dengan

tesseract input.png out.txt

19

Instal imagemagick, pdftotext(ditemukan dalam paket bernama poppler-utilsdalam beberapa manajer paket) dan ocrmypdf . Yang terakhir adalah yang cepat (ocr membutuhkan banyak cpu, dan dikonfigurasi untuk menggunakan semua core Anda), open-source dan bagian yang sering diperbarui dari perangkat lunak OCR. Pendekatan ini mungkin berlebihan karena benar-benar mencoba untuk menetapkan string untuk setiap kata, bukan hanya label kata, tapi saya punya banyak kesulitan menemukan perangkat lunak OCR opensource yang baik dan mudah digunakan secara umum. Kemudian, di direktori tempat Anda menyimpan semua JPG Anda:

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

2
fwiw, ini menggunakan Tesseract yang disebutkan di bawah.
exic

ocrmypdfmembuat hari saya
Astronot Everyday

ide harus mengkonversi ke pdf terlebih dahulu hanya konyol. mengapa saya tidak bisa hanya memasukkan file jpg dan mengeluarkan teks mentah?
Michael

Anda dapat menggunakan file bash untuk melakukan semua baris perintah untuk Anda.
projetmbc

7

File gambar kelas atas .png sebesar 480%, ubah ke skala abu-abu, isi ulang dengan warna putih, pertajam lalu ekstrak menggunakan OCR tesseract. Ini berfungsi dengan baik sebagian besar waktu bagi saya, kecuali font yang sangat besar, dan putih di atas hitam. Jika fontnya sangat besar hanya kelas atas 200% atau 300%.

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

Hasilnya di file.txt.


Inilah yang berhasil bagi saya dengan sepotong kecil teks non-Inggris dengan ukuran font yang kecil. Luar biasa.
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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.