Tabled adalah perpustakaan kecil untuk mendeteksi dan mengekstraksi tabel. Ia menggunakan surya untuk menemukan semua tabel dalam PDF, mengidentifikasi baris/kolom, dan memformat sel menjadi penurunan harga, csv, atau html.
Ciri | Populasi | Perubahan dari 2016 ke 2060 | ||||||
---|---|---|---|---|---|---|---|---|
2016 | 2020 | 2030 | 2040 | 2050 | 2060 | Nomor | Persen | |
Jumlah penduduk | 323.1 | 332.6 | 355.1 | 373.5 | 388.9 | 404.5 | 81.4 | 25.2 |
Di bawah 18 tahun | 73.6 | 74.0 | 75.7 | 77.1 | 78.2 | 80.1 | 6.5 | 8.8 |
18 hingga 44 tahun | 116.0 | 119.2 | 125.0 | 126.4 | 129.6 | 132.7 | 16.7 | 14.4 |
45 hingga 64 tahun | 84.3 | 83.4 | 81.3 | 89.1 | 95.4 | 97.0 | 12.7 | 15.1 |
65 tahun ke atas | 49.2 | 56.1 | 73.1 | 80.8 | 85.7 | 94.7 | 45.4 | 92.3 |
85 tahun ke atas | 6.4 | 6.7 | 9.1 | 14.4 | 18.6 | 19.0 | 12.6 | 198.1 |
100 tahun ke atas | 0,1 | 0,1 | 0,1 | 0,2 | 0,4 | 0,6 | 0,5 | 618.3 |
Discord adalah tempat kita mendiskusikan perkembangan masa depan.
Ada API yang dihosting untuk tabel yang tersedia di sini:
Bekerja dengan PDF, gambar, dokumen Word, dan powerpoint
Kecepatan yang konsisten, tanpa lonjakan latensi
Keandalan dan waktu aktif yang tinggi
Saya ingin agar dapat diakses seluas mungkin, sambil tetap mendanai biaya pengembangan/pelatihan saya. Penelitian dan penggunaan pribadi selalu diperbolehkan, namun ada beberapa batasan pada penggunaan komersial.
Bobot untuk model ini dilisensikan cc-by-nc-sa-4.0
, namun saya akan mengesampingkan hal tersebut untuk organisasi mana pun dengan pendapatan kotor di bawah $5 juta USD dalam periode 12 bulan terakhir DAN di bawah $5 juta dalam pendanaan VC/angel seumur hidup dinaikkan. Anda juga tidak boleh bersaing dengan Datalab API. Jika Anda ingin menghapus persyaratan lisensi GPL (lisensi ganda) dan/atau menggunakan bobot secara komersial melebihi batas pendapatan, lihat opsi di sini.
Anda memerlukan python 3.10+ dan PyTorch. Anda mungkin perlu menginstal obor versi CPU terlebih dahulu jika Anda tidak menggunakan Mac atau mesin GPU. Lihat di sini untuk lebih jelasnya.
Instal dengan:
pip instal tabel-pdf
Pasca pemasangan:
Periksa pengaturan di tabled/settings.py
. Anda dapat mengganti pengaturan apa pun dengan variabel lingkungan.
Perangkat obor Anda akan terdeteksi secara otomatis, tetapi Anda dapat menimpanya. Misalnya, TORCH_DEVICE=cuda
.
Bobot model akan diunduh secara otomatis saat pertama kali Anda menjalankan tabel.
tabel DATA_PATH
DATA_PATH
dapat berupa gambar, pdf, atau folder gambar/pdf
--format
menentukan format keluaran untuk setiap tabel ( markdown
, html
, atau csv
)
--save_json
menyimpan informasi baris dan kolom tambahan dalam file json
--save_debug_images
menyimpan gambar yang menunjukkan baris dan kolom yang terdeteksi
--skip_detection
berarti gambar yang Anda masukkan semuanya adalah tabel yang dipotong dan tidak memerlukan deteksi tabel apa pun.
--detect_cell_boxes
secara default, tabled akan mencoba menarik informasi sel dari pdf. Jika Anda ingin sel dideteksi oleh model deteksi, tentukan ini (biasanya Anda hanya memerlukan ini dengan pdf yang memiliki teks tersemat yang buruk).
--save_images
menentukan bahwa gambar baris/kolom dan sel yang terdeteksi harus disimpan.
Setelah menjalankan skrip, direktori keluaran akan berisi folder dengan nama dasar yang sama dengan nama file masukan. Di dalam folder tersebut akan terdapat file penurunan harga untuk setiap tabel di dokumen sumber. Secara opsional juga akan ada gambar tabel.
Juga akan ada file results.json
di root direktori keluaran. File tersebut akan berisi kamus json yang kuncinya adalah nama file masukan tanpa ekstensi. Setiap nilai akan berupa daftar kamus, satu nilai per tabel dalam dokumen. Setiap kamus tabel berisi:
cells
- teks yang terdeteksi dan kotak pembatas untuk setiap sel tabel.
bbox
- bbox sel dalam tabel bbox
text
- teks sel
row_ids
- id baris tempat sel berada
col_ids
- id kolom tempat sel berada
order
- urutan sel ini dalam sel baris/kolom yang ditetapkan. (urutkan berdasarkan baris, lalu kolom, lalu urutkan)
rows
- bbox dari baris yang terdeteksi
bbox
- bbox baris dalam format (x1, x2, y1, y2).
row_id
- id unik dari baris tersebut
cols
- bbox kolom yang terdeteksi
bbox
- bbox kolom dalam format (x1, x2, y1, y2).
col_id
- id unik kolom
image_bbox
- bbox untuk gambar dalam format (x1, y1, x2, y2). (x1, y1) adalah pojok kiri atas, dan (x2, y2) adalah pojok kanan bawah. Tabel bbox relatif terhadap ini.
bbox
- kotak pembatas tabel di dalam gambar bbox.
pnum
- nomor halaman dalam dokumen
tnum
- indeks tabel pada halaman
Saya telah menyertakan aplikasi streamlit yang memungkinkan Anda mencoba tabel secara interaktif pada gambar atau file PDF. Jalankan dengan:
instalasi pip streamlit tabled_gui
dari tabled.ekstrak import ekstrak_tabeldari tabled.fileinput import load_pdfs_imagesfrom tabled.inference.models import load_detection_models, load_recognition_modelsdet_models, rec_models = load_detection_models(), load_recognition_models()images, highres_images, nama, text_lines = load_pdfs_images(IN_PATH)page_results = ekstrak_tabel(gambar, gambar_res tinggi, baris_teks, det_model, model_rekom)
Skor rata-rata | Waktu per meja | Jumlah tabel |
---|---|---|
0,847 | 0,029 | 688 |
Sulit untuk mendapatkan data kebenaran dasar yang baik untuk tabel, karena Anda dibatasi pada tata letak sederhana yang dapat diurai dan dirender secara heuristik, atau Anda perlu menggunakan LLM, yang membuat kesalahan. Saya memilih untuk menggunakan prediksi tabel GPT-4 sebagai kebenaran dasar semu.
Tabled mendapatkan skor keselarasan .847
jika dibandingkan dengan GPT-4, yang menunjukkan keselarasan antar teks dalam baris/sel tabel. Beberapa ketidakselarasan disebabkan oleh kesalahan GPT-4, atau ketidakkonsistenan kecil dalam batasan tabel yang dianggap GPT-4. Secara umum kualitas ekstraksi cukup tinggi.
Berjalan pada A10G dengan penggunaan VRAM 10 GB dan ukuran batch 64
, pembuatan tabel membutuhkan waktu .029
detik per tabel.
Jalankan benchmark dengan:
tolok ukur python/benchmark.py out.json
Terima kasih kepada Peter Jansen atas kumpulan data benchmarkingnya, dan atas diskusi tentang penguraian tabel.
Huggingface untuk kode inferensi dan model hosting
PyTorch untuk pelatihan/inferensi