sachin commited on
Commit
7fe792a
·
1 Parent(s): da18e21
Files changed (2) hide show
  1. app.py +121 -0
  2. requirements.txt +2 -0
app.py ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import requests
3
+ import os
4
+ import dwani
5
+ import logging
6
+
7
+ # Set up logging
8
+ logging.basicConfig(level=logging.INFO)
9
+ logger = logging.getLogger(__name__)
10
+
11
+ # Configure dwani API settings
12
+ dwani.api_key = os.getenv("DWANI_API_KEY")
13
+ dwani.api_base = os.getenv("DWANI_API_BASE_URL")
14
+
15
+ # Log API configuration for debugging
16
+ logger.debug("DWANI_API_KEY: %s", "Set" if dwani.api_key else "Not set")
17
+ logger.debug("DWANI_API_BASE_URL: %s", dwani.api_base)
18
+
19
+ # Language options as simple array
20
+ language_options = ["english", "kannada", "hindi"]
21
+
22
+ def process_pdf(pdf_file, page_number, prompt, src_lang, tgt_lang):
23
+ logger.debug("Received inputs - PDF: %s, Page: %s, Prompt: %s, Source Lang: %s, Target Lang: %s",
24
+ pdf_file, page_number, prompt, src_lang, tgt_lang)
25
+
26
+ # Validate inputs
27
+ if not pdf_file:
28
+ logger.error("No PDF file provided")
29
+ return {"error": "Please upload a PDF file"}
30
+
31
+ if not prompt.strip():
32
+ logger.error("Prompt is empty")
33
+ return {"error": "Please provide a non-empty prompt"}
34
+
35
+ try:
36
+ page_number = int(page_number)
37
+ if page_number < 1:
38
+ raise ValueError("Page number must be at least 1")
39
+ except (ValueError, TypeError):
40
+ logger.error("Invalid page number: %s", page_number)
41
+ return {"error": "Page number must be a positive integer"}
42
+
43
+ # Validate language codes
44
+ if src_lang not in language_options or tgt_lang not in language_options:
45
+ logger.error("Invalid language selection - Source: %s, Target: %s", src_lang, tgt_lang)
46
+ return {"error": "Invalid source or target language selection"}
47
+
48
+ # Get file path from Gradio File object
49
+ file_path = pdf_file.name if hasattr(pdf_file, 'name') else pdf_file
50
+
51
+ logger.debug("Calling API with file: %s, page: %d, prompt: %s, src_lang: %s, tgt_lang: %s",
52
+ file_path, page_number, prompt, src_lang, tgt_lang)
53
+
54
+ # Call the API
55
+ try:
56
+ result = dwani.Documents.run_doc_query(
57
+ file_path=file_path,
58
+ prompt=prompt,
59
+ page_number=page_number,
60
+ src_lang=src_lang,
61
+ tgt_lang=tgt_lang
62
+ )
63
+ logger.debug("API response: %s", result)
64
+ return {
65
+ "Original Text": result.get("original_text", "N/A"),
66
+ "Response": result.get("response", "N/A"),
67
+ "Processed Page": result.get("processed_page", "N/A"),
68
+ "Translated Response": result.get("translated_response", "N/A")
69
+ }
70
+ except dwani.exceptions.DhwaniAPIError as e:
71
+ logger.error("Dhwani API error: %s", str(e))
72
+ return {"error": f"API error: {str(e)}"}
73
+ except Exception as e:
74
+ logger.error("Unexpected error: %s", str(e))
75
+ return {"error": f"Unexpected error: {str(e)}"}
76
+
77
+ # Define Gradio interface
78
+ with gr.Blocks(title="PDF Custom Prompt Processor") as demo:
79
+ gr.Markdown("# PDF Custom Prompt Processor")
80
+ gr.Markdown("Upload a PDF, specify a page number, enter a prompt, and select source and target languages.")
81
+
82
+ with gr.Row():
83
+ with gr.Column():
84
+ pdf_input = gr.File(label="Upload PDF", file_types=[".pdf"])
85
+ page_number = gr.Number(label="Page Number", value=1, minimum=1, precision=0)
86
+ prompt = gr.Textbox(
87
+ label="Custom Prompt",
88
+ placeholder="e.g., List the key points",
89
+ value="List the key points",
90
+ lines=3
91
+ )
92
+ src_lang_input = gr.Dropdown(
93
+ label="Source Language",
94
+ choices=language_options,
95
+ value="english"
96
+ )
97
+ tgt_lang_input = gr.Dropdown(
98
+ label="Target Language",
99
+ choices=language_options,
100
+ value="kannada"
101
+ )
102
+ submit_btn = gr.Button("Process")
103
+
104
+ with gr.Column():
105
+ output = gr.JSON(label="Response")
106
+
107
+ submit_btn.click(
108
+ fn=process_pdf,
109
+ inputs=[pdf_input, page_number, prompt, src_lang_input, tgt_lang_input],
110
+ outputs=output
111
+ )
112
+
113
+ # Launch the interface
114
+ if __name__ == "__main__":
115
+ # Test API configuration
116
+ if not dwani.api_key or not dwani.api_base:
117
+ logger.error("API key or base URL not set. Please set DWANI_API_KEY and DWANI_API_BASE_URL environment variables.")
118
+ print("Error: Please set DWANI_API_KEY and DWANI_API_BASE_URL environment variables.")
119
+ else:
120
+ logger.debug("Starting Gradio interface...")
121
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ gradio
2
+ dwani