Difference between revisions of "RAG: PDF to md"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "## File Python * [Unduh `pdf_to_rag_md.py`](sandbox:/mnt/data/pdf_to_rag_md.py) * [Unduh `requirements-pdf-to-rag-md.txt`](sandbox:/mnt/data/requirements-pdf-to-rag-md.txt)...")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
## File Python
 
## File Python
  
* [Unduh `pdf_to_rag_md.py`](sandbox:/mnt/data/pdf_to_rag_md.py)
+
* [[pdf_to_rag_md.py]]
* [Unduh `requirements-pdf-to-rag-md.txt`](sandbox:/mnt/data/requirements-pdf-to-rag-md.txt)
+
* [[requirements-pdf-to-rag-md.txt]]
  
 
Skrip sudah diperiksa dengan `py_compile` dan diuji pada:
 
Skrip sudah diperiksa dengan `py_compile` dan diuji pada:

Latest revision as of 03:56, 25 July 2026

    1. File Python

Skrip sudah diperiksa dengan `py_compile` dan diuji pada:

  • PDF dengan bookmark dan struktur heading.
  • PDF tanpa heading, menggunakan fallback setiap lima halaman.
    1. Instalasi

```bash mkdir -p ~/Apps/pdf-to-rag cd ~/Apps/pdf-to-rag

python3 -m venv .venv source .venv/bin/activate

pip install --upgrade pip pip install -r requirements-pdf-to-rag-md.txt ```

    1. Menjalankan

```bash python pdf_to_rag_md.py "Judul Buku.pdf" ```

Menentukan folder output:

```bash python pdf_to_rag_md.py "Judul Buku.pdf" \

   --output-dir hasil-rag

```

Menambahkan tag metadata:

```bash python pdf_to_rag_md.py "Judul Buku.pdf" \

   --tags "RAG,AI,LLM,dokumentasi"

```

Jika folder output sudah ada:

```bash python pdf_to_rag_md.py "Judul Buku.pdf" \

   --overwrite

```

    1. Format filename

Untuk PDF yang memiliki heading:

```text Judul Buku 01 BAB 1 Pendahuluan.md Judul Buku 02 1.1 Latar Belakang.md Judul Buku 03 1.2 Tujuan.md Judul Buku 04 BAB 2 Metode.md ```

Jika PDF tidak memiliki heading, otomatis fallback per lima halaman:

```text Judul Buku 01 Bagian Halaman 1-5.md Judul Buku 02 Bagian Halaman 6-10.md Judul Buku 03 Bagian Halaman 11-15.md ```

Judul buku diambil secara berurutan dari:

1. Metadata title PDF. 2. Teks judul dengan font terbesar pada halaman awal. 3. Nama file PDF.

    1. Konten yang dibuang

Secara default, skrip membuang:

  • Gambar dan blok nonteks.
  • Caption `Gambar`, `Figure`, atau `Fig`.
  • Baris `Sumber:` dan `Source:` pada caption.
  • Nomor halaman.
  • Header dan footer berulang.
  • Footnote yang terdeteksi di bagian bawah halaman.
  • Daftar isi.
  • Daftar gambar dan daftar tabel.
  • Daftar istilah dan glosarium.
  • Daftar singkatan, simbol, dan nomenklatur.
  • Indeks.
  • Daftar pustaka, bibliography, dan references.
  • Kata pengantar, prakata, dan foreword.
  • Ucapan terima kasih.
  • Tentang penulis.
  • Halaman sampul dan copyright yang terdeteksi.
  • Karakter tersembunyi, soft hyphen, dan spasi berlebihan.
    1. Metadata pada setiap file Markdown

Setiap file memiliki YAML front matter seperti:

```yaml --- schema_version: '1.0' document_id: pdf-914f553ce7c36f8704e4 topic_id: pdf-914f553ce7c36f8704e4-topic-0001 chunk_id: pdf-914f553ce7c36f8704e4-topic-0001

book_title: Buku Uji RAG title: BAB 1 Pendahuluan topic: BAB 1 Pendahuluan topic_index: 1

language: id tags:

 - RAG
 - AI

source:

 file: Buku Uji RAG.pdf
 sha256: 914f553ce7c36f8704e412b1fcb51b90
 page_start: 3
 page_end: 8
 pages:
   - 3
   - 4
   - 5
   - 6
   - 7
   - 8
 trace: Buku Uji RAG.pdf#page=3-8
 pdf_title: Buku Uji RAG
 pdf_author: Nama Penulis

rag:

 unit: topic
 filename_pattern: Judul Buku 00 Topik.md
 topic_detection: pdf_toc
 word_count: 1450
 character_count: 9860
 content_sha256: 76a95b85fe3c9e48882c351138aa5f86
 suggested_splitter: markdown_headers_then_token_window

extraction:

 engine: PyMuPDF
 images: ignored
 figure_captions: removed
 junk_sections: removed
 standalone_page_number_filter: enabled
 footnote_filter: bottom_position_and_small_font

output_file: Buku Uji RAG 01 BAB 1 Pendahuluan.md generated_at: '2026-07-25T03:00:00+00:00' --- ```

Skrip juga menghasilkan:

```text manifest.json ```

Manifest berisi daftar semua topik, filename, rentang halaman, metode pendeteksian topik, hash dokumen, dan halaman nonkonten yang dibuang.

PDF hasil scan yang tidak memiliki selectable text harus menjalani OCR terlebih dahulu.