Docling/tests/test_backend_pptx.py
Cesar Berrospi Ramis 1ac010354f
test: avoid testing exact JSON (#1027)
* test: avoid testing exact JSON

Avoid testing exact JSON output in html and xml backends.
Reuse the JSON verify helper function among backend test files.
Improve type annotations in html backend.

Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>

* Update tests/test_backend_patent_uspto.py

Co-authored-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>

---------

Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>
Co-authored-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com>
2025-02-20 16:20:07 +01:00

75 lines
1.9 KiB
Python

import os
from pathlib import Path
from docling.datamodel.base_models import InputFormat
from docling.datamodel.document import ConversionResult, DoclingDocument
from docling.document_converter import DocumentConverter
from .verify_utils import verify_document
GENERATE = False
def get_pptx_paths():
# Define the directory you want to search
directory = Path("./tests/data/pptx/")
# List all PPTX files in the directory and its subdirectories
pptx_files = sorted(directory.rglob("*.pptx"))
return pptx_files
def get_converter():
converter = DocumentConverter(allowed_formats=[InputFormat.PPTX])
return converter
def verify_export(pred_text: str, gtfile: str):
if not os.path.exists(gtfile) or GENERATE:
with open(gtfile, "w") as fw:
fw.write(pred_text)
return True
else:
with open(gtfile, "r") as fr:
true_text = fr.read()
assert pred_text == true_text, "pred_itxt==true_itxt"
return pred_text == true_text
def test_e2e_pptx_conversions():
pptx_paths = get_pptx_paths()
converter = get_converter()
for pptx_path in pptx_paths:
# print(f"converting {pptx_path}")
gt_path = (
pptx_path.parent.parent / "groundtruth" / "docling_v2" / pptx_path.name
)
conv_result: ConversionResult = converter.convert(pptx_path)
doc: DoclingDocument = conv_result.document
pred_md: str = doc.export_to_markdown()
assert verify_export(pred_md, str(gt_path) + ".md"), "export to md"
pred_itxt: str = doc._export_to_indented_text(
max_text_len=70, explicit_tables=False
)
assert verify_export(
pred_itxt, str(gt_path) + ".itxt"
), "export to indented-text"
assert verify_document(
doc, str(gt_path) + ".json", GENERATE
), "document document"