Làm cách nào để sử dụng OCR từ dòng lệnh trong Linux?


30

Tôi có vài ngàn trang sách được quét. Mỗi trang được lưu riêng lẻ dưới dạng JPG. Chữ viết rõ ràng, nhưng phông chữ khác nhau, và các trang bao gồm hình ảnh và hình minh họa.

Tôi cần tạo một danh sách tất cả các từ xuất hiện trong mỗi tệp JPG. Có một công cụ dòng lệnh để quét một hình ảnh liệt kê các từ xuất hiện? Nó không cần phải quét hoàn hảo, chỉ cần một ước tính.


github.com/tesseract-oc/tesseract/wiki/Command-Line-Usage - đó là công cụ đằng sau ocrmypdf, và nói chung, sẽ cho phép bạn có ít bước hơn trong thiết lập.
Oakad

4
Bản sao có thể có của OCR trên các hệ thống Linux
tò mò

2
trùng lặp là một chút cũ, công cụ neweer có thể tồn tại. Tôi sẽ bỏ phiếu để ngỏ.
Archemar

Câu trả lời:


25

tesseract có lẽ là giải pháp được sử dụng nhiều nhất ở đây. Nó có sẵn trong hầu hết các kho gói, ví dụ,

sudo apt install tesseract-ocr

và có thể được sử dụng với

tesseract input.png out.txt

19

Cài đặt imagemagick, pdftotext(được tìm thấy trong một gói có tên poppler-utilstrong một số trình quản lý gói) và ocrmypdf . Cái thứ hai là nhanh (ocr cần rất nhiều cpu và nó được cấu hình để sử dụng tất cả các lõi của bạn), phần mềm OCR mã nguồn mở và được cập nhật thường xuyên. Cách tiếp cận này có thể quá mức cần thiết vì nó thực sự cố gắng gán một chuỗi cho mỗi từ thay vì chỉ dán nhãn cho một từ, nhưng tôi đã gặp rất nhiều khó khăn khi tìm kiếm phần mềm OCR mã nguồn mở và dễ sử dụng nói chung. Sau đó, trong thư mục bạn đã lưu tất cả các tệp JPG của mình:

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

2
fwiw, điều này sử dụng Tesseract được đề cập dưới đây.
exic

ocrmypdflàm cho ngày của tôi
Phi hành gia hàng ngày

ý tưởng về việc phải chuyển đổi sang pdf trước tiên chỉ là ngớ ngẩn. Tại sao tôi không thể nhập tệp jpg và nhận được một số văn bản thô?
Michael

Bạn có thể sử dụng tệp bash để thực hiện tất cả các dòng lệnh cho bạn.
projetmbc

7

Nâng cao hình ảnh file.png bằng 480%, thay đổi thành thang độ xám, chèn lấp với màu trắng, làm sắc nét và sau đó giải nén bằng tesseract OCR. Nó hoạt động tốt hầu hết thời gian đối với tôi, ngoại trừ phông chữ rất lớn và màu trắng trên nền đen. Nếu phông chữ rất lớn chỉ cao cấp 200% hoặc 300%.

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

Kết quả là trong file.txt.


Đây là những gì làm việc cho tôi với một đoạn văn bản không phải tiếng Anh rất nhỏ với cỡ chữ nhỏ. Kinh ngạ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

Nguồn: https://help.ubfox.com/community/OCR

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.