Bagaimana mengubah pdf menjadi pdf yang bisa dicari teks?


20

Saya memiliki sejumlah dokumen yang dipindai dalam pdf dan saya ingin dapat mencarinya. Bagaimana saya bisa melakukan itu?

Pada dasarnya saya harus OCR pdf dan kemudian mencampur teks yang diekstraksi kembali ke pdf baru. Saya gagal mencoba sejumlah solusi yang berbeda (termasuk yang ditemukan di Menambahkan info OCR ke PDF ).

  1. pdfocr (yang memberi saya masalah ini: https://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich (di mana pusat perangkat lunak mengatakan itu adalah paket yang buruk dan saya tidak boleh menginstalnya)
  3. OCRfeeder (di pusat perangkat lunak) mengekspor ke odt dengan baik, tetapi tidak bereaksi ketika mengekspor ke pdf.
  4. Gscan2pdf mengekspor gambar semua hitam (tetapi dapat dicari) seperti yang dilaporkan dalam diskusi ini .
  5. Saya tidak berpikir penampil Pdfxchange dapat menangani melakukan OCR dengan cepat pada file lebih dari 500 halaman.

Apakah ada paket perangkat lunak yang tidak saya sadari? Atau skrip yang melakukan ini?


3
Saya belum mencobanya sendiri, tapi saya pernah melihat proyek ini direkomendasikan di masa lalu.
Glutanimate

Saya baru saja menulis pdf2searchablepdf. Itu bergantung tesseract. Itu bekerja dengan baik. Sangat mudah digunakan. Lihat disini. askubuntu.com/a/1187881/327339
Gabriel Staples

Jawaban:


12

Ubuntu <16,04

Mengikuti komentar Glutanimate saya telah menemukan solusi yang berfungsi. Ini adalah skrip OCRmyPDF .

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

Jika Anda menerima pesan yang mengatakan Anda harus menginstal GNU parallel. Itu dapat dilakukan (mengikuti /ubuntu//a/298598/115155 ) dengan (baris kedua adalah opsional dan tergantung pada rasa dan versi Anda):

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

Akhirnya Anda dapat OCR pdf Anda dengan perintah:

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

Jika tampaknya perintah tidak responsif, Anda dapat meningkatkan verbositas menggunakan -vflag (yang dapat digunakan secara bertahap sebagai -vvatau -vvv). Mungkin lebih baik untuk menguji hasilnya terlebih dahulu pada pdf yang lebih pendek. Anda dapat mempersingkat pdf sebagai berikut:

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

Ubuntu> = 16,04

Pada Ubuntu 16.04 OCRmyPDF telah tersedia melalui apt. Lari saja

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

Akhirnya Anda dapat OCR pdf Anda dengan perintah:

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

Jika tampaknya perintah tidak responsif, Anda dapat meningkatkan verbositas menggunakan -vflag (yang dapat digunakan secara bertahap sebagai -vvatau -vvv). Mungkin lebih baik untuk menguji hasilnya terlebih dahulu pada pdf yang lebih pendek. Anda dapat mempersingkat pdf sebagai berikut:

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

Jika Anda memiliki pertanyaan, lihat di Repo Github yang baru .


Apakah Anda akan menerima jawaban Anda, untuk menyelesaikannya? (Sehingga tidak masuk dalam daftar yang tidak dijawab)
Pengguna Terdaftar

Hanya sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFuntuk Ubuntu 16,04
Martin Thoma

1
Untuk Ubuntu 16.10 dan yang lebih baru, Anda bisa melakukannya sudo apt install ocrmypdf.
endolith

6

@ don.joey menjawab dengan skrip ocrmypdf . Namun, itu dapat diinstal langsung sekarang (mulai 16.10 dan seterusnya).

sudo apt install ocrmypdf

Maka Anda harus menginstal bahasa tesseract yang Anda butuhkan.

Untuk daftar bahasa mana yang sudah ada di sistem Anda, ketik:

tesseract --list-langs

Jika Anda melewatkannya, pasanglah. Contohnya,

sudo apt install tesseract-ocr-spa

Sekarang Anda dapat menghasilkan PDF yang dapat dicari (kualitasnya akan bervariasi, tergantung pada dokumen yang dipindai) dengan perintah berikut

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

Anda tentu saja dapat memeriksa halaman manualnya untuk beberapa opsi tambahan.


Apakah tuan upvote saya!
don.joey

4

pdfsandwichmelakukan pekerjaan ini dengan tepat. Saya tidak menyadari bahwa ada paket yang disediakan di pusat perangkat lunak, tetapi saya menyediakan paket deb Ubuntu untuk itu di situs web proyek (lihat http://www.tobias-elze.de/pdfsandwich/ untuk detailnya), termasuk versi terbaru (0.1.2), yang kemungkinan belum ada di pusat perangkat lunak apa pun.

Jika Anda memiliki file yang dipindai scanned_file.pdf, cukup panggil

pdfsandwich scanned_file.pdf

yang menghasilkan file scanned_file_ocr.pdfdengan teks yang dikenali ditambahkan ke halaman yang dipindai.

Dibandingkan dengan sebagian besar solusi yang ada, ini mendeteksi secara otomatis versi tesseract yang diinstal dan menyesuaikan perilakunya. Selain itu, ia melakukan preprocessing dari gambar yang dipindai sebelum proses OCR, seperti de-skewing atau penghapusan tepi gelap dll, yang sangat dapat meningkatkan pengenalan karakter optik.

PENOLAKAN: Saya adalah pengembang pdfsandwichdan karena itu sangat bias.


Kedengarannya hebat, tetapi mengapa pdfsandwich versi 0.1.4 diinstal menggunakan apt-get mengkonversi setiap karakter menjadi persegi panjang hitam untuk saya di Ubuntu 16.04?
Valentas

1
Itu sulit dijawab tanpa perincian lebih lanjut. Pertama-tama, saya sarankan untuk menggunakan versi alat yang lebih baru. Versi saat ini adalah 0.1.6. Anda dapat menemukan paket deb untuk Ubuntu di situs web. Kedua, jika itu tidak membantu, Anda mungkin ingin menggunakan opsi -verbose untuk mendapatkan rincian lebih lanjut dan menggunakan detail ini untuk mengajukan laporan bug.
Tobias Elze

beberapa masalah bagi saya. convert: berupaya melakukan operasi yang tidak diizinkan oleh kebijakan keamanan `PDF '@ error / constitute.c / IsCoderAuthorized / 408. jadi saya harus menginstal imagemagick dari sumber yang diunduh dari imagemagick.org/script/install-source.php maka saya mendapat kesalahan saat memuat pustaka bersama: libMagickCore-7.Q16HDRI.so.6: tidak dapat membuka file objek bersama: "Tidak ada file atau direktori "'dan solusi ini bekerja dengan menjalankan' sudo ldconfig / usr / local / lib 'versi imagemagick adalah 7.0.8-56 didapat dengan' identifikasikan-versi '.
tajam

mungkin ada baiknya menambahkan utilitas ini jika Anda berencana untuk memanipulasi atau memotong pdf. 1. pdfshuffler untuk membagi halaman kiri dan kanan (dari 2 sisi asli) 2. rantai pdftk pdf Gunakan pdftk (sebagai file jar) untuk membagi file menjadi halaman genap dan halaman ganjil secara terpisah: 4 untuk memotong halaman pdfquench - saya perlu juga gir1. 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2. pdfsandwich juga berhasil, mengurangi ukuran file sebesar 10X juga. Terima kasih. Ubuntu 19.04 juga pdfsam untuk dipisah dan digabung, dijalankan sebagai file Java jar setelah mengunduh
pierrely

0

OCRfeeder memiliki bug di

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

baris 436 harus membaca:

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

mengubah ini dan itu berhasil untuk saya


0

OS: Ubuntu 18.04

Pertama, instal tesseract-ocrdengan:

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 !!

Jika Anda akan menggunakan bahasa selain bahasa Inggris dengan tesseract, maka Anda harus menginstal paket laguage yang sesuai. Misalnya untuk bahasa Portugis, Anda harus melakukan:

sudo apt-get install tesseract-ocr-por

Kalau tidak, Anda akan mendapatkan kesalahan:

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.

Jika Anda Google "tesseract PDF" Anda mungkin akan menemukan posting yang agak ketinggalan zaman ini . Namun, itu memberi Anda beberapa petunjuk yang bermanfaat. Pertama-tama Anda harus mengonversi .pdffile Anda menjadi .tiffsatu. Lari:

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

Jika, seperti pada posting yang sudah usang, Anda lupa menambahkan alpha -Off, Anda akan mendapatkan kesalahan berikut:

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

Sekarang Anda dapat menjalankan perintah terakhir. Dalam kasus tertentu bahwa PDF asli Anda dalam bahasa Portugis, Anda akan memerlukan perintah ini:

tesseract -l por newfile.tiff output pdf 

File yang dihasilkan akan diberi nama output.pdf. Jika, misalnya, PDF Anda dalam bahasa Prancis, setelah Anda menginstal yang sesuai tesseract-ocr-fra, Anda akan menjalankan:

tesseract -l fra newfile.tiff output pdf 

Dan file yang diinginkan adalah, lagi output.pdf,.


0

Saya punya masalah yang sama jadi saya menulis ini selama akhir pekan. Cobalah; ini bekerja dengan baik! Ini adalah pembungkus sederhana tesseract. Ini digunakan pdftoppmuntuk mengkonversi PDF menjadi banyak file TIFF, kemudian digunakan tesseractuntuk melakukan OCR (Optical Character Recognition) pada mereka dan menghasilkan PDF yang dapat dicari sebagai output. Semua file sementara antara secara otomatis dihapus ketika skrip selesai.

Kode sumber: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

Petunjuk untuk menginstal & menggunakan pdf2searchablepdf:

Diuji pada Ubuntu 18,04 pada 11 November 2019.

Install:

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

Menggunakan:

pdf2searchablepdf mypdf.pdf

Anda sekarang akan memiliki pdf bernama mypdf_searchable.pdf , yang berisi teks yang bisa dicari!

Selesai Wrapper tidak memiliki dependensi python, karena saat ini seluruhnya ditulis dalam bash.

Referensi atau Sumber Terkait:

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. Bagaimana mengubah pdf menjadi pdf yang bisa dicari teks?
  3. Apa solusi OCR terbaik dan paling sederhana?
  4. Mengekstrak gambar yang disematkan dari PDF
  5. pdfsandwich : Pembungkus perangkat lunak alternatif yang baru saja saya temukan, itu juga layak untuk dicoba! 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. [cara mengubah PDF menjadi banyak gambar dengan pdftoppm] Mengekstrak gambar yang disematkan dari PDF
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.