50 lines
1.5 KiB
Python
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()
|