Bir PDF'yi aranabilir bir metne dönüştürmek nasıl?


21

Pdf'de taranan çok sayıda dokümanım var ve bunları aramak istiyorum. Bunu nasıl yapabilirim?

Aslında pdf OCR ve sonra çıkarılan metni yeni bir pdf içine karıştırmak zorunda. Başarısız bir şekilde farklı çözümler denedim ( PDF'ye OCR bilgisi ekleme bölümünde bulunanlar da dahil olmak üzere ).

  1. pdfocr (bu bana bu sorunu veriyor: https://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich (yazılım merkezi kötü bir paket olduğunu söylüyor ve yüklememeliyim)
  3. OCRfeeder (yazılım merkezinde) güzel bir şekilde odt'a ihraç eder, ancak pdf'ye aktarırken tepki vermez.
  4. Gscan2pdf , bu tartışmada bildirildiği gibi tüm siyah (ancak aranabilir) bir görüntüyü dışa aktarır .
  5. Pdfxchange görüntüleyici 500 sayfanın üzerindeki dosyalarda anında ocr işleyebilir düşünmüyorum.

Farkında olmadığım bir yazılım paketi var mı? Yoksa bunu yapan bir senaryo mu?


3
Henüz kendim denemedim, ama bu projenin geçmişte önerildiğini gördüm .
Glutanimate

Az önce yazdım pdf2searchablepdf. Güveniyor tesseract. İyi çalışıyor. Süper kullanımı kolay. Buraya bakın. askubuntu.com/a/1187881/327339
Gabriel Staples

Yanıtlar:


12

Ubuntu <16,04

Glutanimate'ın yorumunu takiben çalışan bir çözüm buldum. Öyle OCRmyPDF komut .

git clone https://github.com/jbarlow83/OCRmyPDF
cd OCRmyPDF
sh ./OCRmyPDF.sh -h  # to see the usage

GNU paralel kurmanız gerektiğini belirten bir mesaj alırsanız. İle yapılabilir (aşağıdaki /ubuntu//a/298598/115155 ) (ikinci satır isteğe bağlıdır ve lezzetinize ve versiyonunuza bağlıdır):

sudo apt-get install parallel
sudo rm /etc/parallel/config

Son olarak pdf'nizi şu komutla OCR yapabilirsiniz:

sh ./OCRmyPDF.sh input.pdf output.pdf  # change input and output to the files you want

Komutun yanıt vermediği anlaşılıyorsa, -vbayrağı kullanarak ayrıntı düzeyini artırabilirsiniz ( -vvveya artımlı olarak veya olarak kullanılabilir -vvv). Sonuçları daha kısa bir pdf'de test etmek en iyisi olabilir. Bir pdf dosyasını aşağıdaki gibi kısaltabilirsiniz:

pdftk A=input.pdf cat A1-5 output output.pdf

Ubuntu> = 16,04

Ubuntu 16.04 itibariyle OCRmyPDF apt aracılığıyla kullanıma sunulmuştur. Sadece koş

sudo apt install ocrmypdf
ocrmypdf -h   # to see the usage

Son olarak pdf'nizi şu komutla OCR yapabilirsiniz:

ocrmypdf input.pdf output.pdf  # change input and output to the files you want

Komutun yanıt vermediği anlaşılıyorsa, -vbayrağı kullanarak ayrıntı düzeyini artırabilirsiniz ( -vvveya artımlı olarak veya olarak kullanılabilir -vvv). Sonuçları daha kısa bir pdf'de test etmek en iyisi olabilir. Bir pdf dosyasını aşağıdaki gibi kısaltabilirsiniz:

pdftk A=input.pdf cat A1-5 output output.pdf

Herhangi bir sorunuz varsa, yeni Github Repo'ya bir göz atın .


Cevabınızı çözmek için kabul eder misiniz? (Yanıtsız listeye gelmemesi için)
Kayıtlı Kullanıcı

Sadece sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFUbuntu 16.04 için
Martin Thoma

1
Ubuntu 16.10 ve sonraki sürümler için bunu yapabilirsiniz sudo apt install ocrmypdf.
endolith

6

@ don.joey ocrmypdf betiği ile cevap verdi . Bununla birlikte, şimdi doğrudan yüklenebilir (16.10'dan itibaren).

sudo apt install ocrmypdf

Ardından ihtiyacınız olan tesseract dillerini kurmanız gerekir.

Sisteminizde hangi dillerin bulunduğunu listelemek için şunu yazın:

tesseract --list-langs

Birini özlerseniz, yükleyin. Örneğin,

sudo apt install tesseract-ocr-spa

Şimdi aşağıdaki komutla aranabilir bir PDF (kalitesi taranan belgeye bağlı olarak değişecektir) üretebilirsiniz

ocrmypdf -l 'spa' old.pdf new.pdf

Elbette, bazı ek seçenekler için kılavuz sayfasına bakabilirsiniz.


Benim oyum var efendim!
don.joey

4

pdfsandwichtam olarak bu işi yapar. Yazılım merkezinde sağlanan bir paket olduğunu bilmiyordum, ancak proje web sitesinde bunun için Ubuntu deb paketleri sağlıyorum ( ayrıntılar için http://www.tobias-elze.de/pdfsandwich/ adresine bakın), henüz herhangi bir yazılım merkezinde olması muhtemel olmayan en son sürüm (0.1.2) dahil.

Taranmış bir dosyanız varsa scanned_file.pdf,

pdfsandwich scanned_file.pdf

scanned_file_ocr.pdftanınan metnin taranan sayfalara eklenmesiyle dosyayı oluşturur .

Mevcut çözümlerin çoğuyla karşılaştırıldığında, kurulu tesseract sürümünü otomatik olarak algılar ve davranışını buna göre uyarlar. Buna ek olarak, optik karakter tanımayı önemli ölçüde artırabilen eğim giderme veya koyu kenarların kaldırılması gibi OCR işleminden önce taranan görüntülerin önişlemini gerçekleştirir.

YASAL UYARI: Ben geliştiriciyim pdfsandwichve bu nedenle ağır önyargılıyım.


Kulağa harika geliyor, ama neden apt-get kullanılarak yüklenen pdfsandwich sürüm 0.1.4, Ubuntu 16.04'te her karakteri benim için siyah bir dikdörtgene dönüştürüyor?
Valentas

1
Daha fazla ayrıntı olmadan cevaplamak zor. Her şeyden önce, aracın daha yeni bir sürümünü kullanmanızı tavsiye ederim. Mevcut sürüm 0.1.6'dır. Ubuntu için deb paketlerini web sitesinde bulabilirsiniz. İkincisi, bu yardımcı olmazsa, daha fazla ayrıntı almak için -verbose seçeneğini kullanmak ve bir hata raporu oluşturmak için bu ayrıntıları kullanmak isteyebilirsiniz.
Tobias Elze

benim için birkaç konu. convert: `PDF '@ error / constitute.c / IsCoderAuthorized / 408 güvenlik politikası tarafından izin verilmeyen bir işlem gerçekleştirmeye çalışın. Kaynak indirilen I imagemagick yüklemek zorunda imagemagick.org/script/install-source.php sonra ben 'hata var yükleme paylaşılan kütüphaneler ise: libMagickCore-7.Q16HDRI.so.6: açamıyor paylaşılan nesne dosyası: "Böyle dosyası veya dizini "" ile çalıştık ve bu çözüm 'sudo ldconfig / usr / local / lib' imagemagick sürümünü çalıştırarak çalıştı.
pierrely

pdf'leri manipüle etmeyi veya kırpmayı planlıyorsanız bu araçları eklemeye değer olabilir. 1. pdfshuffler sol ve sağ sayfaları (2 taraflı orijinal) bölmek için 2. pdftk pdf zinciri pdftk (jar dosyası olarak) dosyayı tek ve tek sayfalara ayrı ayrı bölmek için kullanın: 4 sayfaları kırpmak için pdfquench - Ben de gir1 gerekiyordu. 2-gookanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2. pdfsandwich bir tedavi çalıştı, dosya boyutunu da 10 kat azalttı. Teşekkürler. Ubuntu 19.04 ayrıca pdfsam bölmek ve birleştirmek, indirdikten sonra Java jar dosyası olarak çalıştırmak
pierrely

0

OCRfeeder'de bir hata var

/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py

satır 436 şunları okumalıdır:

            lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
#            lines = '\n'.split(asUnicode(stuff).strip())

bunu değiştirdi ve benim için çalıştı


0

İşletim Sistemi: Ubuntu 18.04

İlk önce aşağıdakileri yükleyin tesseract-ocr:

apt-cache show tesseract-ocr
sudo apt-get update && sudo apt-get upgrade
apt-get install tesseract-ocr --print-uris
apt-get install tesseract-ocr
sudo !!

Eğer tesseract ile İngilizce dışında bir dil kullanacaksanız, ilgili dil paketini kurmanız gerekecektir. Örneğin, Portekizce için yapmanız gerekenler:

sudo apt-get install tesseract-ocr-por

Aksi takdirde hatayı alırsınız:

Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/por.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your 
"tessdata" directory.
Failed loading language 'por'
Tesseract couldn't load any languages!
Could not initialize tesseract.

Google'ı "tesseract PDF" yaparsanız, muhtemelen bu eski moda bir yazı bulacaksınız . Ancak, size bazı yararlı ipuçları verir. Önce .pdfdosyanızı bir dosyaya dönüştürmeniz gerekir .tiff. Çalıştırmak:

convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff

Eski gönderide olduğu gibi eklemeyi unutursanız alpha -Off, aşağıdaki hatayı alırsınız:

Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
Error in pixReadFromTiffStream: spp not in set {1,3,4}

Şimdi son komutu çalıştırabilirsiniz. Orijinal PDF'nizin Portekizce olması durumunda, bu komuta ihtiyacınız olacaktır:

tesseract -l por newfile.tiff output pdf 

Oluşturulan dosya adlandırılacaktır output.pdf. Örneğin, PDF'niz Fransızca ise, ilgili dosyayı yükledikten sonra şunu tesseract-ocr-fraçalıştırırsınız:

tesseract -l fra newfile.tiff output pdf 

Ve istenen dosya yine olacak output.pdf.


0

Aynı sorunu yaşadım, bu yüzden bunu hafta sonu yazdım. Bi dene; harika çalışıyor! Etrafında basit bir sargıdır tesseract. O kullanır pdftoppmo zaman kullanır, TIFF dosyaları bir demet haline PDF dönüştürmek için tesseractüzerlerinde OCR (Optical Character Recognition) gerçekleştirmek ve çıktı olarak aranabilir PDF üretmek. Komut dosyası tamamlandığında tüm ara geçici dosyalar otomatik olarak silinir.

Kaynak kodu: https://github.com/ElectricRCAircraftGuy/PDF2AracanabilirPDF

Kurulum ve kullanım talimatları pdf2searchablepdf:

11 Kasım 2019'da Ubuntu 18.04'te test edildi.

Yüklemek:

git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
./PDF2SearchablePDF/install.sh
sudo apt update
sudo apt install tesseract-ocr

kullanın:

pdf2searchablepdf mypdf.pdf

Artık aranabilir metin içeren mypdf_searchable.pdf adlı bir pdf'niz olacak !

Bitti. Sarıcı, şu anda tamamen bash olarak yazıldığından, python bağımlılıkları yoktur.

Referanslar veya İlgili Kaynaklar:

  1. PDF2 AranabilirPDF : https://github.com/ElectricRCAircraftGuy/PDF2 AranabilirPDF
  2. Bir PDF'yi aranabilir bir metne dönüştürmek nasıl?
  3. En iyi, en basit OCR çözümü nedir?
  4. PDF'den gömülü görüntüleri çıkarma
  5. pdfsandwich : Az önce keşfettiğim alternatif yazılım paketi , bu da kontrol etmeye değer! http://www.tobias-elze.de/pdfsandwich/
  6. /unix/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
  7. [nasıl bir demet görüntülerin içine bir PDF açmak için pdftoppm] PDF'den gömülü görüntüleri ayıklanıyor
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.