GraphReady

Heterogeneous documents โ†’ mapping-ready data for Knowledge Graph construction. An orchestrator agent routes each document through layout analysis, table extraction, and OCR โ€” with calibrated confidence and a fully auditable decision trace. The human expert stays in charge of the final mapping.

Real extraction, shown honestly

Every result below is an actual pipeline output committed to the repo โ€” nothing mocked.

Input: a 9-page digital PDF (course project spec) First page of the input PDF
Agent trace โ€” the orchestrator's actual decisions:
[route]         โ†’ pdf_digital
  text layer has 1483 chars/page
[select_engine] โ†’ docling
  cheapest engine supporting pdf_digital
[accept]        โ†’ write_package
  16,212 chars ยท confidence 0.938
Extracted text (verbatim excerpt):
## Organization

- In order to pass you need to achieve 19
  out of 25 points on the autograder ...
- Submit your solution no later than
  July 15th, 16:00.

Because the text layer was detected, OCR was skipped entirely โ€” a routing decision, not a constant. The same page rendered as an image goes down the OCR path instead and still reaches confidence 0.933.

Measured model choices, not vibes

Which OCR engine should the pipeline trust? We benchmarked candidates on the same pages across four degradation levels, with the PDF text layer as ground truth. Word-level F1 (order-insensitive) and speed:

conditionengineprecisionrecallF1CERs/page
clean 300 dpiRapidOCR0.9840.9800.9820.0031.6
EasyOCR0.9810.9760.9780.04010.8
fax 150 dpiRapidOCR0.9740.9560.9650.0051.2
EasyOCR0.9670.9440.9550.0675.1
poor 100 dpi + blurRapidOCR0.9730.9690.9710.0170.9
EasyOCR0.7850.7330.7580.1063.6
awful 100 dpi + jpeg q20RapidOCR0.9660.9290.9470.0390.8
EasyOCR0.4570.4230.4390.2293.8

Finding: the engines are nearly tied on clean input, but under degradation EasyOCR collapses (F1 0.44) while RapidOCR holds (0.95) at 4โ€“7ร— the speed โ€” so RapidOCR is the pipeline default, and the low-confidence escalation path is reserved for genuinely awful scans. Full results & caveats ยท reproduce it yourself.

What the pipeline produces

package/
โ”œโ”€โ”€ tables/table_00.csv    # extracted, normalized tables
โ”œโ”€โ”€ text.md                # full text in reading order
โ”œโ”€โ”€ document.json          # quality report + agent decision trace
โ””โ”€โ”€ raw_export.json        # backend-native export (full provenance)

Next layers (in progress): semantic column typing, entity candidates, ontology concept suggestions via embedding search, and auto-drafted YARRRML mapping templates โ€” see the roadmap.