ΤΕΥΧΟΣ 025  ·  29 ΟΚΤΩΒΡΙΟΥ 2026 RSS
CodeCity
ΓΝΩΣΗ № 0025

Docling: τα έγγραφά σου σε καθαρό Markdown, με τη δομή στη θέση της

Το Docling είναι ανοιχτή βιβλιοθήκη της IBM Research, σήμερα στο LF AI & Data, που μετατρέπει PDF, Word, PowerPoint, Excel, HTML, εικόνες και ήχο σε καθαρό Markdown και JSON χωρίς να χάσει τη δομή. Καταλαβαίνει τη διάταξη της σελίδας, ανακτά πίνακες με το μοντέλο TableFormer και διορθώνει τη σειρά ανάγνωσης σε δίστηλες σελίδες. Τρέχει τοπικά σε CPU, χωρίς κάρτα γραφικών και χωρίς να στείλει το έγγραφο πουθενά. Στη δοκιμή μας, ένα HTML με πίνακα τριών στηλών και ελληνικό κείμενο βγήκε σωστό σε 0,21 δευτερόλεπτα, ενώ ένα PDF 47 σελίδων έδωσε 21 γραμμές πίνακα — και 94% εικόνες, αν δεν αλλάξεις μία ρύθμιση.

Docling: τα έγγραφά σου σε καθαρό Markdown, με τη δομή στη θέση της

Τι κάνει

Αν έχεις αντιγράψει ποτέ κείμενο από PDF, ξέρεις το αποτέλεσμα: οι στήλες ανακατεύονται, οι πίνακες γίνονται σειρές από λέξεις, οι επικεφαλίδες χάνονται κάπου στη μέση. Αυτό το σπασμένο κείμενο είναι ό,τι ταΐζεις στο μοντέλο όταν του δίνεις τα έγγραφά σου.

Το docling λύνει αυτό ακριβώς το πρόβλημα. Παίρνει ένα έγγραφο και βγάζει Markdown ή JSON που κρατά τη δομή: ποια γραμμή είναι επικεφαλίδα, ποιο κομμάτι είναι παράγραφος, πού αρχίζει και πού τελειώνει ένας πίνακας, με ποια σειρά διαβάζεται μια δίστηλη σελίδα. Δεν είναι μετατροπέας κειμένου. Είναι εργαλείο που καταλαβαίνει τη σελίδα.

Δύο μοντέλα κάνουν τη βαριά δουλειά, και τα δύο τοπικά. Το DocLayNet αναγνωρίζει τη διάταξη: τίτλους, λίστες, πίνακες, εικόνες, υποσημειώσεις. Το TableFormer αναλαμβάνει τους πίνακες, και όχι μόνο τα κελιά: καταλαβαίνει αν ένα κελί ενώνει δύο στήλες και ποια γραμμή είναι επικεφαλίδα. Εδώ σπάει το παιχνίδι στα υπόλοιπα εργαλεία. Ένας πίνακας προδιαγραφών βγαίνει επίπεδο κείμενο, και το μοντέλο διαβάζει νούμερα χωρίς τις ετικέτες τους.

Οι μορφές που δέχεται είναι πολλές: PDF, DOCX, PPTX, XLSX, HTML, Markdown, AsciiDoc, εικόνες, ήχο. Από ήχο βγάζει κείμενο με χρονικές σημάνσεις. Ήχο δεν δοκιμάσαμε, οπότε αυτό μένει ισχυρισμός κατασκευαστή.

Το σημαντικότερο για όποιον δουλεύει με ευαίσθητα έγγραφα: τρέχει τοπικά. Δεν στέλνει το αρχείο σε υπηρεσία, δεν ζητά κλειδί, δεν θέλει λογαριασμό. Θέλει CPU, όχι κάρτα γραφικών. Ένα συμβόλαιο ή ένα εσωτερικό τεχνικό έγγραφο δεν φεύγει από τη μηχανή σου.

Το project ξεκίνησε από την IBM Research και σήμερα ανήκει στο LF AI & Data. Στο GitHub το αποθετήριο έχει 69.784 αστέρια και 5.210 forks, με άδεια MIT. Υπάρχει από τις 9 Ιουλίου 2024, με τελευταία δραστηριότητα σήμερα, 29 Οκτωβρίου 2026 (αποθετήριο).

Στο PyPI η τελευταία έκδοση είναι η 2.144.0, δημοσιευμένη στις 28 Οκτωβρίου 2026. Ο ρυθμός των εκδόσεων λέει πολλά: 2.141.0 στις 20 Οκτωβρίου, 2.142.0 στις 22, 2.143.1 στις 27, 2.144.0 στις 28. Δηλαδή μία έκδοση σχεδόν κάθε δεύτερη μέρα (PyPI). Καλό σημάδι για τη συντήρηση, κακό για την ησυχία σου: ένα εργαλείο που αλλάζει κάθε βδομάδα θέλει κλειδωμένη έκδοση στο αρχείο απαιτήσεων.

Για ποιον είναι

Για όποιον ταΐζει έγγραφα σε μοντέλο και έχει βαρεθεί να βλέπει σπασμένους πίνακες. Αυτό περιλαμβάνει δύο πολύ διαφορετικές ομάδες.

Τον ερασιτέχνη που φτιάχνει το πρώτο του σύστημα ερωτήσεων πάνω σε δικά του αρχεία — αυτό που λέμε RAG, δηλαδή το μοντέλο να απαντά με βάση τα έγγραφά σου και όχι με τη γενική του γνώση. Εκεί το Docling κάνει τη βρόμικη δουλειά χωρίς να γράψεις κώδικα ανάγνωσης PDF. Τρεις γραμμές Python και έχεις κείμενο.

Τον επαγγελματία που έχει σωρό τεχνικά εγχειρίδια, τιμοκαταλόγους, οικονομικές καταστάσεις, συμβόλαια. Εκεί η δομή δεν είναι διακόσμηση· είναι το νόημα. Ένας πίνακας που χάνει τις επικεφαλίδες του γίνεται άχρηστος, και το μοντέλο απαντά λάθος με ύφος σιγουριάς.

Λάμπει όταν τα έγγραφα έχουν πίνακες, δίστηλες σελίδες, υποσημειώσεις, σχήματα με λεζάντες. Εκεί που ένα απλό εργαλείο βγάζει χάος, το Docling βγάζει δομημένο κείμενο.

Δεν είναι για σένα αν θέλεις να μετατρέψεις ένα καθαρό αρχείο Word χωρίς πίνακες. Ένα ελαφρύ εργαλείο το κάνει σε χιλιοστά του δευτερολέπτου, χωρίς να κατεβάσεις μισό γίγα μοντέλα. Δεν είναι επίσης για σένα αν θέλεις να τρέξει σε κινητό ή σε μικροϋπολογιστή με ελάχιστο χώρο. Το βάρος είναι το τίμημα της δομής.

Εγκατάσταση

Η εγκατάσταση γίνεται από το κέλυφος, όχι μέσα από κάποιο πρόγραμμα. Δεν υπάρχει οθόνη ρυθμίσεων, δεν υπάρχει κουμπί εγκατάστασης σε κάποιον editor. Ανοίγεις τερματικό, τρέχεις μία εντολή, τελείωσε.

Προϋπόθεση: Python <4.0,>=3.10. Οι classifiers του πακέτου φτάνουν ως Python 3.14, και η δοκιμή έτρεξε σε Python 3.14.7 χωρίς πρόβλημα. Αν έχεις uv, δεν σκέφτεσαι τίποτα άλλο. Από οποιονδήποτε φάκελο:


uv tool install docling

Αυτό δημιουργεί απομονωμένο περιβάλλον και βάζει την εντολή docling στο PATH. Δεν χρειάζεται εικονικό περιβάλλον, δεν χρειάζεται ενεργοποίηση, δεν λερώνει τα υπόλοιπα πακέτα σου.

Αν προτιμάς pip, θέλεις εικονικό περιβάλλον για να μη συγκρουστούν οι εξαρτήσεις. Δημιούργησέ το, ενεργοποίησέ το, και μετά:


pip install docling

Το πρώτο τρέξιμο κατεβάζει και τα δύο μοντέλα από το HuggingFace. Δεν το κάνει η εγκατάσταση· το κάνει η πρώτη μετατροπή, και εκεί περιμένεις.

Χρήση σε κάθε LLM

Καθαρή δήλωση από την αρχή: το docling δεν είναι MCP server. Δεν δηλώνεις διακομιστή σε κανένα αρχείο ρυθμίσεων, δεν γράφεις mcpServers, δεν κάνεις επανεκκίνηση. Υπάρχει προαιρετικός MCP server στο οικοσύστημα, αλλά δεν τον δοκιμάσαμε και δεν θα σου δώσουμε σχήμα που δεν έχουμε δει να δουλεύει.

Το docling είναι βιβλιοθήκη και εντολή. Το καλείς από το κέλυφος ή από Python. Αυτό σημαίνει ότι δουλεύει το ίδιο σε οποιονδήποτε βοηθό, γιατί δεν εξαρτάται από αυτόν.

Η εντολή μετατροπής, από τον φάκελο με το έγγραφό σου:


docling convert paper.pdf --to md --output ./out

Ο βοηθός δεν χρειάζεται να ξέρει τι είναι το docling. Του δίνεις την εντολή, ή του λες να τη γράψει σε ένα αρχείο σύμβασης.

Claude Code

Στο CLAUDE.md γράφεις τη σύμβαση: όταν χρειάζεται να διαβάσεις PDF ή πίνακα, τρέξε docling και δούλεψε πάνω στο Markdown. Για χειροκίνητη μετατροπή:


docling convert paper.pdf --to md --output ./out

Codex CLI

Το ίδιο σχήμα, σε αρχείο AGENTS.md. Καμία ρύθμιση διακομιστή, μόνο η σύμβαση:


docling convert paper.pdf --to md --output ./out

Cursor

Μία οδηγία στους κανόνες του project. Ίδια εντολή, ίδιο αποτέλεσμα:


docling convert paper.pdf --to md --output ./out

Από Python, σε τρεις γραμμές

Αν θέλεις να το βάλεις σε σωλήνα επεξεργασίας δεδομένων, η βιβλιοθήκη είναι το ίδιο απλή:


from docling.document_converter import DocumentConverter
doc = DocumentConverter().convert("paper.pdf")
print(doc.document.export_to_markdown())

Αυτές οι τρεις γραμμές είναι το μισό οποιουδήποτε συστήματος RAG: παίρνεις Markdown με πίνακες, το κόβεις σε κομμάτια, το δίνεις στο μοντέλο.

Με σύνδεσμο αντί για αρχείο

Δέχεται και URL απευθείας:


docling convert https://arxiv.org/pdf/2408.09869 --to md

Βολικό για δημόσια έγγραφα, αλλά θυμήσου: εκεί το έγγραφο ταξιδεύει στο δίκτυο με δική σου εντολή, όχι με δική του πρωτοβουλία.

Πού κερδίζει, πού χάνει

Κερδίζει πρώτα στους πίνακες. Ο πίνακας βγαίνει πίνακας. Στη δοκιμή μας, ένας πίνακας τριών στηλών με ελληνικό κείμενο και νούμερα βγήκε σε Markdown με τις επικεφαλίδες στη θέση τους και τα κελιά στα σωστά σημεία. Αυτό είναι το πιο δύσκολο κομμάτι της μετατροπής εγγράφων, και εδώ γίνεται σωστά.

Κερδίζει στη σειρά ανάγνωσης. Σε δίστηλη σελίδα, ένα εργαλείο που διαβάζει γραμμή προς γραμμή βγάζει ασυναρτησίες. Το Docling αναγνωρίζει τις στήλες και τις ενώνει στη σωστή σειρά. Αυτό δεν το μετρήσαμε σε δικό μας δείγμα, αλλά το επιβεβαιώσαμε στο πραγματικό PDF που τρέξαμε.

Κερδίζει στη γλώσσα. Τα ελληνικά βγήκαν ακέραια, με τους τόνους τους. Δεν είναι δεδομένο αυτό: πολλά εργαλεία σπάνε σε μη αγγλικό κείμενο, ειδικά μέσα σε πίνακες.

Κερδίζει στο ότι δεν θέλει τίποτα έξω από τη μηχανή σου. Μηδέν λογαριασμός, μηδέν κλειδί, μηδέν σύννεφο.

Τώρα πού χάνει.

Πρώτο και μεγαλύτερο: η προεπιλογή ενσωματώνει τις εικόνες ως base64 μέσα στο Markdown. Στη δοκιμή μας, σε ένα PDF 47 σελίδων, οι 549.302 από τους 583.345 χαρακτήρες — το 94% του αρχείου — ήταν εικόνες, όχι κείμενο. Το καθαρό κείμενο ήταν περίπου 34 χιλιάδες χαρακτήρες. Αν ταΐσεις αυτό σε RAG, στέλνεις στο μοντέλο ένα αρχείο που είναι κατά 94% άχρηστο βάρος, και πληρώνεις tokens για εικόνες που δεν πρόκειται να διαβαστούν. Η λύση είναι μία σημαία, και την έχουμε παρακάτω.

Δεύτερο, το βάρος. 1,68 GB την πρώτη φορά, και δευτερόλεπτα ανά έγγραφο, όχι χιλιοστά. Για ένα έγγραφο την εβδομάδα δεν είναι τίποτα. Για χίλια έγγραφα είναι μια νύχτα υπολογισμών.

Τρίτο, η ταχύτητα δεν είναι ο λόγος να το διαλέξεις. Είναι ο λόγος να το διαλέξεις όταν μετράει η ποιότητα.

Και η έντιμη επιφύλαξη: το Docling δεν κάνει μαγικά με σαρωμένα έγγραφα. Ένα σαρωμένο PDF είναι εικόνα, όχι κείμενο, και εκεί χρειάζεται οπτική αναγνώριση. Το εργαλείο έχει τέτοιο κομμάτι, αλλά δεν δοκιμάσαμε σαρωμένο έγγραφο — μόνο την προειδοποίηση που τύπωσε. Όποιος δουλεύει με σαρώσεις πρέπει να το δοκιμάσει μόνος του.

Δοκιμή

Έγραψα ένα αρχείο HTML με παγίδες. Είχε επικεφαλίδα, μία φράση-δείκτη, έναν πίνακα τριών στηλών με ελληνικό κείμενο και νούμερα, έναν κωδικό παρτίδας, και δεύτερη επικεφαλίδα. Ήθελα να δω αν ο πίνακας επιβιώνει και αν χάνεται τίποτα στη διαδρομή.


docling convert test.html --to md --output ./out

Η μετατροπή κράτησε 0,21 δευτερόλεπτα, μετά από περίπου 20 δευτερόλεπτα εκκίνησης της εντολής. Ο πίνακας βγήκε σωστός σε Markdown, με τις επικεφαλίδες στη θέση τους. Όλες οι φράσεις-δείκτες βρέθηκαν στο αποτέλεσμα, και τα ελληνικά ήταν ακέραια. Καμία απώλεια.

Μετά το πραγματικό. Πήρα το τεχνικό έγγραφο του Docling από το arXiv, ένα PDF 47 σελίδων, και το έτρεξα:


docling convert paper.pdf --to md --output ./out

Η πρώτη μετατροπή πήρε 172 δευτερόλεπτα — και μέσα σε αυτά ήταν και το κατέβασμα των μοντέλων. Βγήκαν 21 γραμμές πίνακα σε Markdown, σωστά. Το εργαλείο τύπωσε και μία προειδοποίηση, «RapidOCR returned empty result»: το κομμάτι της οπτικής αναγνώρισης δεν έβγαλε τίποτα. Το έγγραφο είναι ψηφιακό κείμενο και δεν το χρειαζόταν, οπότε η προειδοποίηση δεν στοίχισε τίποτα. Την αναφέρουμε όπως βγήκε, χωρίς να τη στολίσουμε.

Και μετά το πιο χρήσιμο εύρημα. Κοίταξα το αρχείο και το βρήκα τεράστιο. Οι 549.302 από τους 583.345 χαρακτήρες ήταν εικόνες σε base64 — το 94%. Ξαναέτρεξα το ίδιο έγγραφο με μία σημαία:


docling convert paper.pdf --to md --image-export-mode placeholder

Το αποτέλεσμα: 34,3 KB, μηδέν base64, τις ίδιες 21 γραμμές πίνακα, σε 137 δευτερόλεπτα. Δηλαδή δεκαεπτά φορές μικρότερο αρχείο, με ακριβώς την ίδια πληροφορία που χρειάζεται ένα μοντέλο. Η διαφορά στα δευτερόλεπτα είναι επειδή τα μοντέλα ήταν πια ζεστά στη μνήμη.

Αυτό είναι το πιο σημαντικό πράγμα σε αυτό το άρθρο. Αν ταΐζεις RAG με την προεπιλογή, στέλνεις 94% εικόνες. Βάλε τη σημαία.

Τι δεν μέτρησα, και το λέω. Δεν μέτρησα μνήμη RAM. Δεν δοκίμασα σαρωμένο έγγραφο ή οπτική αναγνώριση σε πραγματική σάρωση. Δεν μέτρησα το σχήμα του προαιρετικού MCP server. Όποιο νούμερο δεν αναφέρεται εδώ, δεν είναι δικό μας.

Τι κοστίζει

Το μοντέλο. Δικό μας νούμερο: μηδέν tokens. Το docling δεν είναι διακομιστής, δεν φορτώνει σχήμα εργαλείων, δεν πιάνει χώρο σε καμία συνεδρία. Το πλαίσιο του βοηθού δεν πληρώνει τίποτα, είτε το χρησιμοποιείς είτε όχι.

Ο δίσκος. Δικό μας νούμερο, μετρημένο: το περιβάλλον του εργαλείου πιάνει 1.172,4 MB, δηλαδή 1,15 GB. Τα δύο μοντέλα που κατεβαίνουν την πρώτη φορά από το HuggingFace προσθέτουν 505,4 MB — layout 163,8 MB και table structure 341,6 MB. Σύνολο την πρώτη φορά: περίπου 1,68 GB.

Η κάρτα γραφικών. Δικό μας νούμερο: μηδέν. Τρέχει σε CPU, και δεν χρειάστηκε επιτάχυνση υλικού για να βγάλει τα αποτελέσματα της δοκιμής.

Σε χρήμα, μηδέν. Άδεια MIT, χωρίς κλειδί, χωρίς λογαριασμό, χωρίς σύννεφο, χωρίς τηλεμετρία που να ξέρουμε.

Ο χρόνος, δίπλα στα παραπάνω, γιατί ο χρόνος είναι κόστος. Δικό μας νούμερο: 172 δευτερόλεπτα για 47 σελίδες την πρώτη φορά, 137 δευτερόλεπτα με τα μοντέλα ζεστά, και 0,21 δευτερόλεπτα για το μικρό HTML μετά την εκκίνηση της εντολής.

Ισχυρισμός κατασκευαστή, όχι δικό μας νούμερο: η υποστήριξη ήχου, οι επιπλέον μορφές, και ο προαιρετικός MCP server. Τα διαβάζουμε στην τεκμηρίωση. Δεν τα δοκιμάσαμε.

Ετυμηγορία

Score: 8.8/10.

Το Docling λύνει το πρόβλημα που χαλάει τα μισά συστήματα RAG: τη μετατροπή εγγράφου που χάνει τη δομή. Πίνακες σωστοί, σειρά ανάγνωσης σωστή, ελληνικά ακέραια, όλα τοπικά, σε CPU, με μηδέν tokens και μηδέν ευρώ. Στη δοκιμή μας: το HTML με τον πίνακα βγήκε καθαρό σε 0,21 δευτερόλεπτα, και το PDF 47 σελίδων έδωσε 21 γραμμές πίνακα.

Τους υπόλοιπους βαθμούς τους κρατά ή τους χάνει για τρεις λόγους. Το βάρος του — 1,68 GB την πρώτη φορά — το κάνει υπερβολή για ένα καθαρό Word. Ο χρόνος του μετριέται σε δευτερόλεπτα ανά έγγραφο, όχι σε χιλιοστά. Και η προεπιλογή του φουσκώνει το αποτέλεσμα με εικόνες, κάτι που το διορθώνεις με μία σημαία αλλά πρέπει πρώτα να το ξέρεις.

Πού το προτείνουμε χωρίς δισταγμό: σε κάθε σωλήνα που ταΐζει έγγραφα σε μοντέλο και έχει πίνακες, στήλες ή διάταξη που πρέπει να επιβιώσει. Εκεί το Docling είναι ο καθαρότερος τρόπος να δώσεις σε ένα μοντέλο τα δικά σου έγγραφα. Για ένα απλό Word, μείνε στο ελαφρύ.

Πηγές: αποθετήριο https://github.com/docling-project/docling · πακέτο PyPI https://pypi.org/project/docling/ · τεκμηρίωση https://docling-project.github.io/docling/

Εγκατάσταση

1 ΒΗΜΑΤΑ
  1. uv tool install docling
Docling: τα έγγραφά σου σε καθαρό Markdown, με τη δομή στη θέση της · ΑΠΟΤΕΛΕΣΜΑ
ΠΗΓΗ
github.com/docling-project/docling