diff --git a/src/axiomatic/axtract/axtract_report.py b/src/axiomatic/axtract/axtract_report.py index 34a82ed..bc10d9d 100644 --- a/src/axiomatic/axtract/axtract_report.py +++ b/src/axiomatic/axtract/axtract_report.py @@ -248,7 +248,7 @@ def create_report(report_data: EquationExtractionResponse, report_path: str = ". html_content += f""" \\({symbol.key}\\) - {symbol.key} + {symbol.value} """ diff --git a/src/axiomatic/axtract/interactive_table.py b/src/axiomatic/axtract/interactive_table.py index 428088d..4122124 100644 --- a/src/axiomatic/axtract/interactive_table.py +++ b/src/axiomatic/axtract/interactive_table.py @@ -409,6 +409,6 @@ def _create_variable_dict(equation_response: EquationExtractionResponse) -> dict for symbol in equation.latex_symbols: # Only add if not already present (avoid duplicates) if symbol.key not in variable_dict: - variable_dict[symbol.key] = {"name": symbol.key} + variable_dict[symbol.key] = {"name": symbol.value} return variable_dict diff --git a/src/axiomatic/base_client.py b/src/axiomatic/base_client.py index e5dfa3a..886a251 100644 --- a/src/axiomatic/base_client.py +++ b/src/axiomatic/base_client.py @@ -27,7 +27,6 @@ from .fso.client import AsyncFsoClient from .pic.client import AsyncPicClient - class BaseClient: """ Use this class to access the different functions within the SDK. You can instantiate any number of clients with different configuration that will propagate to these functions. diff --git a/src/axiomatic/client.py b/src/axiomatic/client.py index 0215d4f..b753b19 100644 --- a/src/axiomatic/client.py +++ b/src/axiomatic/client.py @@ -1,7 +1,7 @@ import base64 import dill # type: ignore import json -import requests +import requests # type: ignore import os import time import json @@ -42,24 +42,29 @@ def analyze_equations( file_path: Optional[str] = None, url_path: Optional[str] = None, parsed_paper: Optional[ParseResponse] = None, - ) -> Optional[EquationExtractionResponse]: - response: Union[EquationExtractionResponse, EquationProcessingResponse] - + ) -> Optional[EquationExtractionResponse]: if file_path: - with open(file_path, "rb") as file: - response = self._ax_client.document.equation.from_pdf(document=file) + with open(file_path, "rb") as pdf_file: + response = self._ax_client.document.equation.from_pdf(document=pdf_file) + elif url_path: if "arxiv" in url_path and "abs" in url_path: url_path = url_path.replace("abs", "pdf") - - response = self._ax_client.document.equation.from_pdf(document=url_path) + url_file = requests.get(url_path) + from io import BytesIO + pdf_stream = BytesIO(url_file.content) + response = self._ax_client.document.equation.from_pdf(document=pdf_stream) + elif parsed_paper: - response = self._ax_client.document.equation.process(**parsed_paper.model_dump()) + response = EquationExtractionResponse.model_validate( + self._ax_client.document.equation.process(**parsed_paper.model_dump()).model_dump() + ) + else: print("Please provide either a file path or a URL to analyze.") return None - - return EquationExtractionResponse(equations=response.equations) + + return response def validate_equations( self,