n0v33n
commited on
Commit
·
ac823bb
1
Parent(s):
001552b
app.py
Browse files
app.py
CHANGED
|
@@ -82,7 +82,7 @@ def extract_climate_data(api_key, file_path=None, url=None):
|
|
| 82 |
def process_climate_document(api_key, file, url_input):
|
| 83 |
"""
|
| 84 |
The function `process_climate_document` extracts climate data from either a file or URL input and
|
| 85 |
-
|
| 86 |
|
| 87 |
:param api_key: The `api_key` parameter is typically a unique identifier or access token that allows
|
| 88 |
you to authenticate and access a specific API or service. It is used in the
|
|
@@ -95,49 +95,20 @@ def process_climate_document(api_key, file, url_input):
|
|
| 95 |
provide a URL input for extracting climate data. This URL should point to a document or webpage
|
| 96 |
containing climate-related information that needs to be analyzed. The function will extract data
|
| 97 |
from this URL if it is provided
|
| 98 |
-
:return: The function `process_climate_document` returns a
|
| 99 |
-
results of a climate document
|
| 100 |
-
organization, publication date, structured data (in JSON format), extracted climate data, chart
|
| 101 |
-
analysis, and extracted text. If there is an error during the extraction process, it will return an
|
| 102 |
-
error message.
|
| 103 |
"""
|
| 104 |
if file:
|
| 105 |
result = extract_climate_data(api_key, file_path=file.name)
|
| 106 |
elif url_input.strip():
|
| 107 |
result = extract_climate_data(api_key, url=url_input.strip())
|
| 108 |
else:
|
| 109 |
-
return "Please provide either a file or URL"
|
|
|
|
| 110 |
if "error" in result:
|
| 111 |
-
return
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
data = result['climate_data']
|
| 115 |
-
if isinstance(data, dict):
|
| 116 |
-
output += f"## Document Overview:\n"
|
| 117 |
-
output += f"**Type:** {data.get('document_type', 'N/A')}\n"
|
| 118 |
-
output += f"**Title:** {data.get('title', 'N/A')}\n"
|
| 119 |
-
output += f"**Organization:** {data.get('organization', 'N/A')}\n"
|
| 120 |
-
output += f"**Date:** {data.get('publication_date', 'N/A')}\n\n"
|
| 121 |
-
output += "## Complete Structured Data:\n"
|
| 122 |
-
output += f"```json\n{json.dumps(data, indent=2)}\n```\n\n"
|
| 123 |
-
else:
|
| 124 |
-
output += "## Extracted Climate Data:\n"
|
| 125 |
-
output += f"```\n{str(data)}\n```\n\n"
|
| 126 |
-
if result.get("chart_descriptions"):
|
| 127 |
-
output += "## Chart Analysis:\n"
|
| 128 |
-
charts = result['chart_descriptions']
|
| 129 |
-
if isinstance(charts, list):
|
| 130 |
-
for i, chart in enumerate(charts, 1):
|
| 131 |
-
if isinstance(chart, dict):
|
| 132 |
-
output += f"### Chart {i}:\n{json.dumps(chart, indent=2)}\n\n"
|
| 133 |
-
else:
|
| 134 |
-
output += f"### Chart {i}:\n{str(chart)}\n\n"
|
| 135 |
-
else:
|
| 136 |
-
output += f"```\n{str(charts)}\n```\n\n"
|
| 137 |
-
if result.get("extracted_text"):
|
| 138 |
-
output += "## Extracted Text:\n"
|
| 139 |
-
output += f"{result['extracted_text']}...\n\n"
|
| 140 |
-
return output
|
| 141 |
|
| 142 |
def analyze_image(api_key, image):
|
| 143 |
"""
|
|
@@ -196,7 +167,7 @@ def analyze_image(api_key, image):
|
|
| 196 |
"temperature_anomaly": 0.0,
|
| 197 |
"description": "Error parsing model output."
|
| 198 |
}
|
| 199 |
-
return
|
| 200 |
except Exception as e:
|
| 201 |
error_result = {
|
| 202 |
"image_type": "error",
|
|
@@ -207,7 +178,7 @@ def analyze_image(api_key, image):
|
|
| 207 |
"temperature_anomaly": 0.0,
|
| 208 |
"description": f"Error processing image: {str(e)}"
|
| 209 |
}
|
| 210 |
-
return
|
| 211 |
|
| 212 |
with gr.Blocks(title="Climate Data and Image Analyzer") as demo:
|
| 213 |
gr.Markdown("# Climate Data and Image Analysis Tool\nAnalyze climate documents or images using Mistral OCR and Pixtral models")
|
|
@@ -231,7 +202,7 @@ with gr.Blocks(title="Climate Data and Image Analyzer") as demo:
|
|
| 231 |
)
|
| 232 |
process_btn = gr.Button("Analyze Document", variant="primary")
|
| 233 |
with gr.Column():
|
| 234 |
-
doc_output = gr.
|
| 235 |
process_btn.click(
|
| 236 |
fn=process_climate_document,
|
| 237 |
inputs=[api_key_input, file_input, url_input],
|
|
|
|
| 82 |
def process_climate_document(api_key, file, url_input):
|
| 83 |
"""
|
| 84 |
The function `process_climate_document` extracts climate data from either a file or URL input and
|
| 85 |
+
returns structured JSON data.
|
| 86 |
|
| 87 |
:param api_key: The `api_key` parameter is typically a unique identifier or access token that allows
|
| 88 |
you to authenticate and access a specific API or service. It is used in the
|
|
|
|
| 95 |
provide a URL input for extracting climate data. This URL should point to a document or webpage
|
| 96 |
containing climate-related information that needs to be analyzed. The function will extract data
|
| 97 |
from this URL if it is provided
|
| 98 |
+
:return: The function `process_climate_document` returns a JSON object containing the analysis
|
| 99 |
+
results of a climate document including climate_data, chart_descriptions, and extracted_text.
|
|
|
|
|
|
|
|
|
|
| 100 |
"""
|
| 101 |
if file:
|
| 102 |
result = extract_climate_data(api_key, file_path=file.name)
|
| 103 |
elif url_input.strip():
|
| 104 |
result = extract_climate_data(api_key, url=url_input.strip())
|
| 105 |
else:
|
| 106 |
+
return {"error": "Please provide either a file or URL"}
|
| 107 |
+
|
| 108 |
if "error" in result:
|
| 109 |
+
return {"error": result['error']}
|
| 110 |
+
|
| 111 |
+
return result
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
|
| 113 |
def analyze_image(api_key, image):
|
| 114 |
"""
|
|
|
|
| 167 |
"temperature_anomaly": 0.0,
|
| 168 |
"description": "Error parsing model output."
|
| 169 |
}
|
| 170 |
+
return result
|
| 171 |
except Exception as e:
|
| 172 |
error_result = {
|
| 173 |
"image_type": "error",
|
|
|
|
| 178 |
"temperature_anomaly": 0.0,
|
| 179 |
"description": f"Error processing image: {str(e)}"
|
| 180 |
}
|
| 181 |
+
return error_result
|
| 182 |
|
| 183 |
with gr.Blocks(title="Climate Data and Image Analyzer") as demo:
|
| 184 |
gr.Markdown("# Climate Data and Image Analysis Tool\nAnalyze climate documents or images using Mistral OCR and Pixtral models")
|
|
|
|
| 202 |
)
|
| 203 |
process_btn = gr.Button("Analyze Document", variant="primary")
|
| 204 |
with gr.Column():
|
| 205 |
+
doc_output = gr.JSON(label="Document Analysis Results")
|
| 206 |
process_btn.click(
|
| 207 |
fn=process_climate_document,
|
| 208 |
inputs=[api_key_input, file_input, url_input],
|