pd3f-core
Eksperimental, gunakan dengan hati-hati.
pd3f-core
adalah paket Python untuk merekonstruksi teks berkelanjutan asli dari PDF dengan model bahasa. pd3f-core
mengasumsikan PDF Anda berbasis teks atau sudah OCRd. pd3f-core
adalah inti dari pd3f: pipeline ekstraksi teks berbasis Docker lengkap (termasuk OCR).
pd3f-core
pertama kali menggunakan Parsr untuk membagi PDF menjadi beberapa baris dan paragraf. Kemudian, ia menggunakan dehyphen paket Python untuk merekonstruksi paragraf dengan cara yang paling mungkin. Probabilitasnya diperoleh dengan menghitung kebingungan dengan model bahasa berbasis karakter Flair. Tanda hubung yang tidak perlu dihilangkan, spasi atau baris baru dipertahankan atau dihilangkan tergantung pada kata-kata di sekitarnya.
Ini terutama dikembangkan untuk bahasa Jerman tetapi juga dapat digunakan dengan bahasa lain. Proyek ini masih dalam tahap awal. Harapkan tepian yang kasar dan perubahan yang cepat.
Dokumentasi API pd3f-core: https://pd3f.github.io/pd3f-core/index.html
Dokumentasi pd3f (the ): https://pd3f.com/docs/
Periksa apakah dua baris dapat digabungkan dengan menghilangkan tanda hubung ('-').
Putuskan antara menambahkan spasi sederhana (' ') atau baris baru ('n') saat menggabungkan baris.
Periksa apakah paragraf terakhir suatu halaman dan paragraf pertama halaman berikutnya dapat digabungkan.
Untuk menggabungkan paragraf (dan membalikkan jeda halaman), deteksi catatan kaki dan ubah menjadi catatan akhir. Untuk saat ini, catatan kaki ditarik ke akhir file.
Jika header atau footer sama untuk semua halaman, tampilkan hanya satu kali. Header ditarik ke awal dokumen dan footer ditarik ke akhir. Beberapa heuristik berdasarkan kesamaan footer digunakan. (Jarak Jaccard untuk teks, dan bandingkan bentuk yang tumpang tindih)
pip install pd3f
atau
poetry add pd3f
Mulai instance Parsr lokal:
docker-compose up
(Anda juga dapat menggunakan terowongan instance Parsr jarak jauh (skrip) atau memilih alamat jarak jauh.)
from pd3f import extract
text , tables = extract ( file_path , tables = False , experimental = False , force_gpu = False , lang = "multi" , fast = False , parsr_location = "localhost:3001" )
Penjelasan parameter dalam dokumen: https://pd3f.github.io/pd3f-core/export.html#pd3f.export.extract
Menggunakan CUDA mempercepat evaluasi dengan Flair. Tapi Anda membutuhkan GPU (mahal). Anda perlu mengatur GPU Anda dengan CUDA. Berikut panduan untuk Ubuntu 18.04
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
(contoh)pd3f-core
dengan puisi: poetry add pd3f
Puisi menyadari bahwa ia dijalankan dalam conda virtual env sehingga tidak membuat yang baru. Karena pengaturan CUDA itu sulit, instal dengan cara paling mudah (dengan conda).
Inti dari pd3f-core
adalah keluaran JSON dari Parsr. Beberapa komentar tentang bagaimana dan mengapa hal-hal tertentu dipilih. Dokumentasi Parsr tentang berbagai modul
Parsr memiliki beberapa modul untuk mengklasifikasikan paragraf ke dalam tipe tertentu. Mereka menawarkan deteksi daftar serta deteksi judul. Menurut pengalaman saya, akurasinya terlalu rendah untuk keduanya, jadi kami tidak menggunakannya sekarang. Ini juga berarti semua teks (keluaran) yang diekstraksi datar (tidak ada judul, format berbeda, dll.).
Kami mengaktifkan Menggambar + Deteksi Gambar karena kami mungkin perlu memahami paragraf mana yang mengikuti paragraf lainnya. Ini mungkin berguna saat memutuskan apakah akan menggabungkan paragraf. Namun drop saat mengaktifkan setting fast
.
Dalam output JSON ada bidang pageNumber
. Ini berasal dari modul deteksi halaman. Jadi pageNumber
berasal dari header/footer setiap halaman. Jadi mungkin berbeda dengan indeks di array halaman. Jangan menyampaikan pageNumber
dalam keluaran JSON.
words-to-line-new
telah digunakan seperti ini. Tidak ada kesalahan tetapi keakuratannya berkurang jika digunakan sebaliknya.
" words-to-line-new " ,
[
" reading-order-detection " ,
Jangan lakukan OCR dengan Parsr karena hasilnya lebih buruk daripada OCRmyPDF (karena yang terakhir menggunakan pra-pemrosesan gambar).
Instal dan gunakan puisi.
Lisensi Publik Umum Affero 3.0