You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Measured data from a production pipeline running 0.9.92 over a real corpus, plus two implementation offers for both halves of this issue.
1. Image content in PDFs (the OCR gap).extract_pdf_text returns the text layer only; a scanned or image-only PDF yields "". We added an optional fallback: when the extraction is near-empty and pdftoppm/tesseract are present, rasterize a bounded page count (we cap at 20 pages, 150 dpi) and OCR the images, joining the text. On our corpus this recovered a whole class of documents that previously produced zero graph nodes. The tools are gated on presence, never hard dependencies — which would make it a natural graphifyy[ocr] extra. Happy to submit as a PR.
2. The pptx half of this issue is still open upstream (0.9.92 has no pptx_to_markdown; graphify.detect carries docx/xlsx/pdf and silently drops every .pptx). We've been carrying a local patch implementing it via python-pptx (slide-by-slide text extraction with title/body structure preserved) since September. If the direction is acceptable, that patch can come upstream too — it's small and self-contained, and it closes the other half of this report.
Both implementations are in daily use here and can be adapted to whatever shapes the maintainers prefer (dependency extras, naming, test structure).
Activity
grazenN commentedon Oct 17, 2026
Measured data from a production pipeline running 0.9.92 over a real corpus, plus two implementation offers for both halves of this issue.
1. Image content in PDFs (the OCR gap).
extract_pdf_textreturns the text layer only; a scanned or image-only PDF yields"". We added an optional fallback: when the extraction is near-empty andpdftoppm/tesseractare present, rasterize a bounded page count (we cap at 20 pages, 150 dpi) and OCR the images, joining the text. On our corpus this recovered a whole class of documents that previously produced zero graph nodes. The tools are gated on presence, never hard dependencies — which would make it a naturalgraphifyy[ocr]extra. Happy to submit as a PR.2. The pptx half of this issue is still open upstream (0.9.92 has no
pptx_to_markdown;graphify.detectcarries docx/xlsx/pdf and silently drops every .pptx). We've been carrying a local patch implementing it viapython-pptx(slide-by-slide text extraction with title/body structure preserved) since September. If the direction is acceptable, that patch can come upstream too — it's small and self-contained, and it closes the other half of this report.Both implementations are in daily use here and can be adapted to whatever shapes the maintainers prefer (dependency extras, naming, test structure).