Bagaimana cara mengekstrak teks dengan OCR dari PDF di Linux?
43
Bagaimana cara mengekstrak teks dari PDF yang tidak dibuat dengan indeks? Ini semua teks, tetapi saya tidak dapat mencari atau memilih apa pun. Saya menjalankan Kubuntu, dan Okular tidak memiliki fitur ini.
Tampaknya tidak ada paket biner, jadi Anda perlu membuatnya dari sumber. Pastikan untuk menginstal pustaka ImageMagick C ++ untuk memiliki dukungan untuk dasarnya semua format gambar input (jika tidak hanya akan menerima BMP).
Walaupun tampaknya pada dasarnya tidak berdokumen selain dari file README singkat, saya telah menemukan hasil OCR yang cukup baik. Yang menyenangkan tentang itu adalah ia dapat menampilkan informasi posisi untuk teks OCR dalam format hOCR , sehingga memungkinkan untuk menempatkan teks kembali ke posisi yang benar di lapisan tersembunyi dari file PDF. Dengan cara ini Anda dapat membuat PDF yang "dapat dicari" dari mana Anda dapat menyalin teks.
Saya telah menggunakan hocr2pdf untuk membuat ulang PDF dari hasil PDF dan gambar OCR khusus gambar saja. Sayangnya, program ini tampaknya tidak mendukung pembuatan PDF multi-halaman, jadi Anda mungkin harus membuat skrip untuk menanganinya:
#!/bin/bash
# Run OCR on a multi-page PDF file and create a new pdf with the
# extracted text in hidden layer. Requires cuneiform, hocr2pdf, gs.
# Usage: ./dwim.sh input.pdf output.pdf
set -e
input="$1"
output="$2"
tmpdir="$(mktemp -d)"
# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiffg4 -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input"
# OCR each page individually and convert into PDF
for page in "$tmpdir"/page-*.tiff
do
base="${page%.tiff}"
cuneiform -f hocr -o "$base.html" "$page"
hocr2pdf -i "$page" -o "$base.pdf" < "$base.html"
done
# combine the pages into one PDF
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$output" "$tmpdir"/page-*.pdf
rm -rf -- "$tmpdir"
Harap perhatikan bahwa skrip di atas sangat sederhana. Misalnya, itu tidak mempertahankan metadata PDF apa pun.
Adakah ide untuk memperbaiki skrip ini untuk menambahkan tahap pemeriksaan ejaan untuk memperbaiki kesalahan dalam langkah pengenalan?
Gökhan Sever
@ Gökhan Sever, maksud Anda menambahkan pemeriksaan ejaan interaktif di mana pengguna diminta untuk penggantian kata yang salah eja / tidak dikenal? Saya pikir Anda bisa melakukannya dengan menambahkan sesuatu seperti aspell check --mode=html "$base.html"dalam skrip tepat setelah menjalankan runcing.
Jukka Matilainen
Ini adalah salah satu solusinya. Namun tanpa melihat keseluruhan konteks teks, sulit untuk melakukan koreksi. Akan lebih baik melihat antarmuka yang dibangun di dalam ocrfeeder.
Gökhan Sever
1
Ngomong-ngomong, saya menggunakan tesseract untuk pengenalan karakter: mengganti baris runcing dengan: tesseract "$ page" "$ base" hocr
Gökhan Sever
1
Koreksi kecil: Baris untuk tesseract setidaknya untuk bahasa lain selain bahasa Inggris, di sini misalnya Jerman (= deu) adalah: `tesseract" $ page "" $ base "-l deu hocr` (tentu saja Anda harus menghapus` `) .
Keks Dosis
14
Lihat apakah pdftotext akan bekerja untuk Anda. Jika tidak ada di mesin Anda, Anda harus menginstal paket poppler-utils
sudo apt-get install poppler-utils
Anda mungkin juga menemukan toolkit pdf penggunaan.
Daftar lengkap perangkat lunak pdf di sini di wikipedia.
Sunting: Karena Anda memang membutuhkan kemampuan OCR, saya pikir Anda harus mencoba cara lain. (Yaitu saya tidak dapat menemukan konverter pdf2text linux yang melakukan OCR).
Konversikan pdf ke gambar
Pindai gambar ke teks menggunakan alat OCR
Konversi pdf ke gambar
gs: Perintah di bawah ini harus mengonversi pdf multi halaman ke file tiff individual.
gs -SDEVICE = tiffg4 -r600x600 -sPAPERSIZE = huruf -sOutputFile = nama file_% 04d.tif -dNOPAUSE -dBATCH - filename
Utilitas ImageMagik : Ada pertanyaan lain di situs SuperUser tentang menggunakan ImageMagik yang mungkin Anda gunakan untuk membantu Anda melakukan konversi.
Apakah program ini juga berfungsi untuk dokumen teks tulisan tangan?
Ivo Flipse
1
Tidak, saya tidak berpikir itu memiliki kemampuan OCR. Itu hanya dapat mengekstrak teks yang tertanam dalam pdf. Halaman manual
nagul
Ya, ini berfungsi untuk dokumen pdf yang sudah disertakan dengan teks yang disematkan. Kasing saya persis di tempat yang tidak.
Helder S Ribeiro
1
@ obvio171 Menambahkan opsi terbaik yang bisa saya temukan agar OCR berfungsi dalam kasus Anda.
nagul
12
Google docs sekarang akan menggunakan OCR untuk mengonversi dokumen gambar / pdf yang Anda unggah menjadi teks. Saya telah sukses dengan itu.
Mereka menggunakan sistem OCR yang digunakan untuk proyek Google Buku raksasa .
Namun, harus dicatat bahwa hanya PDF dengan ukuran 2 MB yang akan diterima untuk diproses.
Pembaruan
1. Untuk mencobanya, unggah <2MB pdf ke google docs dari browser web.
2. Klik kanan pada dokumen yang diunggah dan klik "Buka dengan Google Documents".
... Google Documents akan mengonversi menjadi teks dan menghasilkan ke file baru dengan nama yang sama tetapi Google Documents ketik dalam folder yang sama.
Jawabannya tidak benar-benar spesifik untuk Ubuntu tetapi saya ingin benar-benar berterima kasih: solusi BRILLIANT! :)
Pitto
Ini sangat membantu :) Saya mengunggah file 50 MB kemarin dan berhasil. Sepertinya mereka telah meningkatkan batas ukuran.
Gaurav
2
Geza Kovacs telah membuat paket Ubuntu yang pada dasarnya menggunakan script hocr2pdfseperti yang disarankan Jukka, tetapi membuat segalanya lebih cepat untuk diatur.
Dari posting forum Ubuntu Geza dengan detail pada paket ...
Cara terbaik dan termudah di luar sana adalah menggunakannya pypdfocrtidak mengubah pdf
pypdfocr your_document.pdf
Pada akhirnya Anda akan memiliki your_document_ocr.pdfcara lain yang Anda inginkan dengan teks yang dapat dicari. Aplikasi tidak mengubah kualitas gambar. Menambah ukuran file sedikit dengan menambahkan teks overlay.
Pembaruan 3 November 2018:
pypdfocrtidak lagi didukung sejak 2016 dan saya melihat beberapa masalah karena tidak dibimbing. ocrmypdf( modul ) melakukan pekerjaan similiar dan dapat digunakan seperti ini:
#!/bin/bash
# Run OCR on a multi-page PDF file and create a txt with the
# extracted text in hidden layer. Requires tesseract, gs.
# Usage: ./pdf2ocr.sh input.pdf output.txt
set -e
input="$1"
output="$2"
tmpdir="$(mktemp -d)"
# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiff24nc -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input"
# OCR each page individually and convert into PDF
for page in "$tmpdir"/page-*.tiff
do
base="${page%.tiff}"
tesseract "$base.tiff" $base
done
# combine the pages into one txt
cat "$tmpdir"/page-*.txt > $output
rm -rf -- "$tmpdir"
Posting ini menyatakan bahwa produk dapat melakukannya, yang merupakan petunjuk bermanfaat yang harus diposting sebagai komentar. Itu tidak menjelaskan bagaimana sebenarnya memecahkan masalah, yang merupakan jawaban apa yang harus dilakukan. Dapatkah Anda memperluas jawaban Anda sehingga seseorang dapat melihat bagaimana melakukan solusi?
fixer1234
Terima kasih @ fixer1234, saya telah mengeditnya untuk memasukkan perintah.
Saya menemukan ABBYY OCR cukup menyedihkan, salah satu program yang paling tidak mampu saya coba. Mungkin cukup dengan gambar yang benar-benar bersih dari teks font standar ukuran teks tubuh tipikal, tanpa font campuran, ukuran campuran, tata letak yang rumit, grafik, garis, dll.
fixer1234
Ya saya juga mencoba, itu berfungsi dengan baik. Saya ragu, bisakah Anda membantu saya?
Praveen Kumar KR
Jika yang Anda butuhkan tidak tercakup dalam jawaban lain di sini, hal terbaik untuk dilakukan adalah mengajukan pertanyaan Anda sendiri. Itu akan membuatnya terpapar banyak mata.
Jawaban:
Saya telah sukses dengan port Linux BSD berlisensi sistem Oune Cuneiform .
Tampaknya tidak ada paket biner, jadi Anda perlu membuatnya dari sumber. Pastikan untuk menginstal pustaka ImageMagick C ++ untuk memiliki dukungan untuk dasarnya semua format gambar input (jika tidak hanya akan menerima BMP).
Walaupun tampaknya pada dasarnya tidak berdokumen selain dari file README singkat, saya telah menemukan hasil OCR yang cukup baik. Yang menyenangkan tentang itu adalah ia dapat menampilkan informasi posisi untuk teks OCR dalam format hOCR , sehingga memungkinkan untuk menempatkan teks kembali ke posisi yang benar di lapisan tersembunyi dari file PDF. Dengan cara ini Anda dapat membuat PDF yang "dapat dicari" dari mana Anda dapat menyalin teks.
Saya telah menggunakan hocr2pdf untuk membuat ulang PDF dari hasil PDF dan gambar OCR khusus gambar saja. Sayangnya, program ini tampaknya tidak mendukung pembuatan PDF multi-halaman, jadi Anda mungkin harus membuat skrip untuk menanganinya:
Harap perhatikan bahwa skrip di atas sangat sederhana. Misalnya, itu tidak mempertahankan metadata PDF apa pun.
sumber
aspell check --mode=html "$base.html"
dalam skrip tepat setelah menjalankan runcing.Lihat apakah pdftotext akan bekerja untuk Anda. Jika tidak ada di mesin Anda, Anda harus menginstal paket poppler-utils
Anda mungkin juga menemukan toolkit pdf penggunaan.
Daftar lengkap perangkat lunak pdf di sini di wikipedia.
Sunting: Karena Anda memang membutuhkan kemampuan OCR, saya pikir Anda harus mencoba cara lain. (Yaitu saya tidak dapat menemukan konverter pdf2text linux yang melakukan OCR).
Konversi pdf ke gambar
gs: Perintah di bawah ini harus mengonversi pdf multi halaman ke file tiff individual.
Utilitas ImageMagik : Ada pertanyaan lain di situs SuperUser tentang menggunakan ImageMagik yang mungkin Anda gunakan untuk membantu Anda melakukan konversi.
Konversi gambar ke teks dengan OCR
Diambil dari daftar perangkat lunak OCR Wikipedia
sumber
Google docs sekarang akan menggunakan OCR untuk mengonversi dokumen gambar / pdf yang Anda unggah menjadi teks. Saya telah sukses dengan itu.
Mereka menggunakan sistem OCR yang digunakan untuk proyek Google Buku raksasa .
Namun, harus dicatat bahwa hanya PDF dengan ukuran 2 MB yang akan diterima untuk diproses.
Pembaruan
1. Untuk mencobanya, unggah <2MB pdf ke google docs dari browser web.
2. Klik kanan pada dokumen yang diunggah dan klik "Buka dengan Google Documents".
... Google Documents akan mengonversi menjadi teks dan menghasilkan ke file baru dengan nama yang sama tetapi Google Documents ketik dalam folder yang sama.
sumber
Geza Kovacs telah membuat paket Ubuntu yang pada dasarnya menggunakan script
hocr2pdf
seperti yang disarankan Jukka, tetapi membuat segalanya lebih cepat untuk diatur.Dari posting forum Ubuntu Geza dengan detail pada paket ...
Menambahkan repositori dan menginstal di Ubuntu
Menjalankan ocr pada file
Repositori GitHub untuk kode https://github.com/gkovacs/pdfocr/
sumber
Cara terbaik dan termudah di luar sana adalah menggunakannya
pypdfocr
tidak mengubah pdfPada akhirnya Anda akan memiliki
your_document_ocr.pdf
cara lain yang Anda inginkan dengan teks yang dapat dicari. Aplikasi tidak mengubah kualitas gambar. Menambah ukuran file sedikit dengan menambahkan teks overlay.Pembaruan 3 November 2018:
pypdfocr
tidak lagi didukung sejak 2016 dan saya melihat beberapa masalah karena tidak dibimbing.ocrmypdf
( modul ) melakukan pekerjaan similiar dan dapat digunakan seperti ini:Untuk memasang:
atau
sumber
PDFBeads berfungsi baik untuk saya. Utas ini " Mengonversi Gambar yang dipindai ke Satu File PDF " membuat saya aktif dan berjalan. Untuk pemindaian buku b & w, Anda perlu:
Di folder baru, jalankan
Ini akan menempatkan PDF OCR yang telah disusun dalam direktori induk.
sumber
skrip lain menggunakan tesseract:
sumber
Pustaka OCR Asprise bekerja pada sebagian besar versi Linux. Ini dapat mengambil input dan output PDF sebagai pencarian PDF.
Ini paket komersial. Unduh salinan gratis Asprise OCR SDK untuk Linux di sini dan jalankan dengan cara ini:
Catatan: 'pdf' mandiri menentukan format output.
Penafian: Saya adalah karyawan perusahaan yang memproduksi produk di atas.
sumber
Coba Apache PDFBox untuk mengekstraksi konten teks dari File PDF. Dalam hal gambar yang disematkan ke file PDF gunakan ABBYY FineReader Engine CLI untuk Linux untuk mengekstraksi teks.
sumber