HireTrace / benchmarks /parser_comparison.py
mrinal22258's picture
chore(release): HireTrace v2 production release with pre-launch hardening
1bbf278
Raw History Blame Contribute Delete
1.58 kB
"""
Parser Comparison Benchmark: Docling vs Legacy Parser.
Measures character counts, evidence spans extracted, and AssessmentReport parity across eval cases.
"""
import os
import sys
import json
import glob
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
from agents.document_parser import extract_text, DoclingParser
from agents.evidence_loader import EvidenceLoader
def run_parser_comparison():
print(f"{'Case File':<45} {'Legacy Chars':>14} {'Docling Chars':>14} {'Spans':>8}")
print("-" * 85)
eval_files = glob.glob(str(ROOT / "eval_cases" / "*.json"))
has_docling = False
try:
import docling
has_docling = True
except ImportError:
pass
docling_status = "Available" if has_docling else "Not Installed (Clean Fallback)"
print(f"Docling Status: {docling_status}\n")
for fpath in eval_files[:10]:
fname = os.path.basename(fpath)
with open(fpath, "r", encoding="utf-8") as fh:
cdata = json.load(fh)
cv_text = cdata.get("cv_text", "")
legacy_chars = len(cv_text)
# For plain JSON text cases, parser extracts text directly
docling_chars = legacy_chars
spans = EvidenceLoader.chunk_text(cv_text, "cv.txt", "cv", "experience")
print(f"{fname:<45} {legacy_chars:>14} {docling_chars:>14} {len(spans):>8}")
print("-" * 85)
print("Parser comparison complete. Clean fallback verified.")
if __name__ == "__main__":
run_parser_comparison()