Skip to content

olmOCR: Tool Open-source Lengkap Convert PDF & Image

olmOCR logo

olmOCR adalah toolkit yang dirancang khusus untuk mengubah dokumen berbasis gambar menjadi format teks biasa yang rapi, terutama Markdown. Yang membuat olmOCR menonjol adalah kemampuannya untuk memahami konteks dokumen. Secara umum, olmOCR berarti dapat mengonversi teks dengan urutan bacaan yang alami, bahkan ketika ada gambar, tata letak multi-kolom, atau sisipan teks. Bayangkan, kemarin saya tidak perlu lagi menghabiskan waktu berjam-jam merapikan teks hasil konversi!

Fitur Unggulan yang Saya Rasakan Manfaatnya

  • Konversi ke Markdown yang Bersih: olmOCR mampu mengubah PDF, PNG, dan JPEG menjadi Markdown yang rapi. Sangat membantu sekali dalam mengelola catatan dan artikel teknis.
  • Dukungan untuk Berbagai Format Kompleks: olmOCR bisa menangani persamaan matematika, tabel, tulisan tangan, dan bahkan format yang sangat kompleks dengan sangat baik. Saya sering bekerja dengan makalah ilmiah yang penuh rumus, dan olmOCR bikin mudah dibaca.
  • Penghapusan Header dan Footer Otomatis: Tidak ada lagi teks header atau footer yang mengganggu di hasil konversi.
  • Urutan Bacaan Alami: Tidak seperti alat OCR lain yang seringkali mengacak urutan teks, olmOCR memahami struktur dokumen, menghasilkan teks dengan urutan bacaan yang logis, bahkan pada tata letak yang rumit.
  • Basis Model VLM Parameter 7B: Dengan memakai Vision Language Model (VLM) parameter 7 miliar, olmOCR ini punya pemahaman yang dalam tentang konten visual dan tekstual.

Cara Instalasi olmOCR

Sebelum kita mulai, saya harus menekankan pentingnya menyiapkan environment Python yang bersih untuk olmOCR ini. Dependensinya cukup spesifik, jadi jangan mencoba-coba menginstalnya di lingkungan yang sudah ada bisa menyebabkan konflik dependensi.

Persyaratan Sistem

Untuk menjalankan olmOCR, kamu akan butuh:

  • GPU NVIDIA Terbaru: Saya pakai RTX 4090, dan berfungsi dengan sangat baik. Minimal, kamu memerlukan GPU dengan RAM minimal 15 GB.
  • Ruang Disk Kosong 30 GB: Untuk menyimpan model dan data.
  • poppler-utils dan Font Tambahan: penting buat rendering gambar PDF.

Langkah-langkah Instalasi

Berikut adalah langkah-langkah yang saya ikuti di sistem Ubuntu yang saya pakai:

Instal Dependensi Sistem:

sudo apt-get update sudo apt-get install poppler-utils ttf-mscorefonts-installer msttcorefonts fonts-crosextra-caladea fonts-crosextra-carlito gsfonts lcdf-typetools 

Perintah ini memastikan semua alat dan font yang dibutuhkan untuk memproses PDF sudah terinstal.

Siapkan Lingkungan Conda:

conda create -n olmocr python=3.11 conda activate olmocr 

Saya selalu menggunakan conda untuk mengisolasi lingkungan Python saya. Ini mencegah konflik dependensi antar proyek.

Untuk Operasi Khusus CPU (misalnya, menjalankan benchmark):

pip install olmocr[bench] 

Ini berguna jika kamu hanya ingin menganalisis kinerja tanpa melakukan konversi sebenarnya.

Untuk Konversi File dengan GPU (ini yang saya gunakan):

pip install olmocr[gpu] --extra-index-url https://download.pytorch.org/whl/cu128 

Pastikan kamu menggunakan cu128 (atau versi CUDA yang sesuai dengan instalasi PyTorch kamu) untuk memastikan kompatibilitas driver GPU.

Direkomendasikan: Instal flash-infer untuk Inferensi Lebih Cepat:

pip install https://download.pytorch.org/whl/cu128/flashinfer/flashinfer_python-0.2.5%2Bcu128torch2.7-cp38-abi3-linux_x86_64.whl 

Ini sangat meningkatkan kecepatan inferensi, terutama untuk dokumen yang lebih besar.

Cara Penggunaan olmOCR Secara Lokal

Untuk pengujian cepat, saya seringkali menggunakan demo online mereka di https://olmocr.allenai.org/. Namun, untuk penggunaan sehari-hari dan volume yang lebih besar, menjalankan olmOCR secara lokal adalah pilihan terbaik, mengingat inferensi ditenagai oleh sglang yang membutuhkan GPU.

Mengonversi Satu PDF

Ini adalah skenario penggunaan paling umum saya:

Unduh Contoh PDF:

curl -o olmocr-sample.pdf https://olmocr.allenai.org/papers/olmocr_3pg_sample.pdf 

Saya mengunduh file contoh untuk memastikan semuanya berfungsi sebelum menggunakan dokumen saya sendiri.

Konversi ke Markdown:

python -m olmocr.pipeline ./localworkspace --markdown --pdfs olmocr-sample.pdf 

Perintah ini akan membuat folder localworkspace jika belum ada, dan di dalamnya akan ada subfolder markdown yang berisi hasil konversi.

Mengonversi File Gambar

olmOCR juga dapat menangani file gambar seperti PNG:

python -m olmocr.pipeline ./localworkspace --markdown --pdfs random_page.png

Saya sering menggunakan ini untuk gambar-gambar screenshot atau halaman-halaman yang saya pindai.

Mengonversi Beberapa PDF

Jika kamu memiliki banyak PDF dalam satu folder, kamu bisa mengonversinya sekaligus: code Bashdownloadcontent_copyexpand_less

python -m olmocr.pipeline ./localworkspace --markdown --pdfs tests/gnarly_pdfs/*.pdf

Tanda –markdown akan memastikan semua hasil disimpan sebagai file Markdown di localworkspace/markdown/.

Menggunakan External vLLM Server

Saya juga mengeksplorasi opsi untuk menggunakan vLLM server eksternal. Ini sangat berguna jika saya sudah memiliki infrastruktur inferensi yang berjalan, atau jika saya ingin mendelegasikan beban kerja ke server terpisah. code Bashdownloadcontent_copyexpand_less

python -m olmocr.pipeline ./localworkspace --server http://remote-server:8000 --markdown --pdfs tests/gnarly_pdfs/*.pdf

Pastikan model yang disajikan di server eksternal diberi nama olmocr. Contoh perintah peluncuran vLLM bisa seperti ini: code Bashdownloadcontent_copyexpand_less

vllm serve allenai/olmOCR-7B-0825-FP8 --served-model-name olmocr --max-model-len 16384

Melihat Hasil Konversi

Setelah proses selesai, saya bisa melihat hasilnya di folder localworkspace. Folder ini akan berisi file Dolma dan file Markdown (jika menggunakan –markdown).

Misalnya, untuk melihat hasil konversi file contoh:

    cat localworkspace/markdown/olmocr-sample.md
  

Ini akan menampilkan teks Markdown yang dihasilkan, yang biasanya jauh lebih rapi daripada hasil copy-paste biasa.

Penggunaan Multi-Node / Cluster

Jika kamu berada dalam skenario di mana kamu perlu mengonversi jutaan PDF, seperti yang mungkin saya hadapi di masa depan, olmOCR juga mendukung penggunaan multi-node atau cluster. Ini memungkinkan kamu membaca PDF dari AWS S3 dan mengoordinasikan pekerjaan menggunakan output bucket AWS S3.

Contoh Penggunaan Cluster

Mulai Pekerja Pertama:

python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf 

Perintah ini akan menyiapkan antrean kerja sederhana di bucket AWS kamu dan memulai konversi.

Jalankan Node Berikutnya:

 python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace 

Node-node berikutnya akan secara otomatis mengambil item dari antrean kerja yang sama.

Jika kamu menggunakan Beaker (seperti yang mungkin dilakukan di Ai2), kamu bisa menambahkan tanda –beaker untuk meluncurkan pekerja GPU di cluster:

python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf --beaker --beaker_gpus 4

Ini akan menyiapkan workspace di mesin lokal kamu dan meluncurkan N pekerja GPU di cluster untuk memulai konversi.

Menggunakan Docker

Bagi saya, Docker adalah cara yang sangat nyaman untuk memastikan lingkungan yang konsisten dan terisolasi. olmOCR menyediakan image Docker resmi.

Pull Image Docker:

docker pull alleninstituteforai/olmocr:latest

Menjalankan Container Secara Interaktif:

docker run -it --gpus all --name olmocr_container alleninstituteforai/olmocr:latest /bin/bash 

Opsi –gpus all penting untuk memastikan container dapat mengakses GPU kamu.

Mengakses File Lokal (Volume Mounting):

Jika kamu ingin container mengakses file di mesin lokal kamu, gunakan volume mounting:

docker run -it --gpus all \ -v /path/to/your/local/files:/local_files \ --name olmocr_container \ alleninstituteforai/olmocr:latest /bin/bash 

Sekarang, file-file di /path/to/your/local/files di mesin host kamu akan dapat diakses di /local_files di dalam container.

Semua dependensi sudah terinstal di dalam image Docker. Setelah kamu berada di dalam container, kamu bisa menjalankan perintah olmOCR seperti yang saya jelaskan di atas. Misalnya:

curl -o olmocr-sample.pdf https://olmocr.allenai.org/papers/olmocr_3pg_sample.pdf
python -m olmocr.pipeline ./localworkspace --markdown --pdfs olmocr-sample.pdf

Pengalaman saya dengan olmOCR sejauh ini sangat positif. olmOCR adalah alat yang kuat dan efisien untuk mengubah dokumen kompleks menjadi teks yang dapat digunakan, dan saya sangat merekomendasikannya kepada siapa pun yang sering berurusan dengan PDF dan gambar yang membutuhkan ekstraksi teks berkualitas tinggi.