Files
IPSExtractor/services/services-count-facturas-medicas-serving/scripts/parity_baseline.py
T

50 lines
1.5 KiB
Python

"""Genera baseline Python desde services-count para comparar con el servicio Go."""
from __future__ import annotations
import json
import os
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
SC_ROOT = Path(os.environ.get("SERVICES_COUNT_ROOT", ROOT.parent / "services-count"))
sys.path.insert(0, str(SC_ROOT / "src"))
from services_count.config import load_config
from services_count.inference import predict_pdf
def python_result(pdf_path: Path) -> dict:
config = load_config(SC_ROOT / "config" / "default.yaml")
features_df, total = predict_pdf(pdf_path, config)
services = []
for row in features_df.itertuples():
if row.prediction == 1:
services.append({
"text": row.texto_fila,
"probability": round(float(row.probability), 4),
})
return {
"filename": pdf_path.name,
"service_count": total,
"status": "ok",
"services": services,
}
def main() -> None:
config = load_config(SC_ROOT / "config" / "default.yaml")
pdfs = sorted(config.pdfs_dir.glob("*.pdf"))
if not pdfs:
raise SystemExit(f"No hay PDFs en {config.pdfs_dir}")
out = ROOT / "data" / "parity_baseline.json"
out.parent.mkdir(parents=True, exist_ok=True)
results = [python_result(p) for p in pdfs]
out.write_text(json.dumps(results, indent=2, ensure_ascii=False), encoding="utf-8")
print(f"Baseline guardado: {out} ({len(results)} PDFs)")
if __name__ == "__main__":
main()