deenasun commited on
Commit
ce87886
·
1 Parent(s): 60ae2f3

add file handling from remote api calls

Browse files
Files changed (1) hide show
  1. app.py +49 -4
app.py CHANGED
@@ -161,8 +161,39 @@ def cleanup_temp_video(file_path):
161
  def process_input(input_data):
162
  """Process input data to extract text for ASL conversion"""
163
  if isinstance(input_data, str):
164
- # Direct text input
165
- return input_data.strip()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  elif hasattr(input_data, 'name'):
167
  # File input - extract text from document
168
  try:
@@ -361,8 +392,21 @@ def predict(text, file):
361
  # Use text input
362
  input_data = text.strip()
363
  elif file is not None:
364
- # Use file input
365
- input_data = parser.extract_text(file)
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  else:
367
  # No input provided
368
  return {
@@ -370,6 +414,7 @@ def predict(text, file):
370
  "message": "Please provide either text or upload a file"
371
  }, None
372
 
 
373
  # Process using the unified function
374
  return predict_unified(input_data)
375
 
 
161
  def process_input(input_data):
162
  """Process input data to extract text for ASL conversion"""
163
  if isinstance(input_data, str):
164
+ # Check if it's a file path (contains file extension)
165
+ if any(ext in input_data.lower() for ext in ['.pdf', '.txt', '.docx', '.doc', '.epub']):
166
+ # It's a file path - extract text directly
167
+ try:
168
+ print(f"Processing file path: {input_data}")
169
+ from document_parsing import DocumentParser
170
+ parser = DocumentParser()
171
+ extracted_text = parser.extract_text(input_data)
172
+ if extracted_text:
173
+ print(f"Extracted {len(extracted_text)} characters from file")
174
+ # Convert the extracted text to ASL gloss
175
+ gloss = asl_converter.asl_converter.convert_text(extracted_text)
176
+ print(f"Converted gloss: {gloss[:100]}...")
177
+ return gloss
178
+ else:
179
+ print("No text extracted from file")
180
+ return None
181
+ except Exception as e:
182
+ print(f"Error processing file path: {e}")
183
+ return None
184
+ else:
185
+ # Direct text input
186
+ return input_data.strip()
187
+ elif isinstance(input_data, dict) and 'path' in input_data:
188
+ # This is a gradio.FileData object from API calls
189
+ try:
190
+ print(f"Processing API file: {input_data['path']}")
191
+ gloss = asl_converter.convert_document(input_data['path'])
192
+ print(f"Converted gloss: {gloss[:100]}...") # Show first 100 chars
193
+ return gloss
194
+ except Exception as e:
195
+ print(f"Error processing API file: {e}")
196
+ return None
197
  elif hasattr(input_data, 'name'):
198
  # File input - extract text from document
199
  try:
 
392
  # Use text input
393
  input_data = text.strip()
394
  elif file is not None:
395
+ # Handle different file input types
396
+ if isinstance(file, dict) and 'path' in file:
397
+ # This is a gradio.FileData object from API calls
398
+ print(f"Processing API file: {file}")
399
+ input_data = file
400
+ elif hasattr(file, 'name'):
401
+ # This is a regular file object
402
+ print(f"Processing regular file: {file.name}")
403
+ input_data = file
404
+ else:
405
+ print(f"Unknown file type: {type(file)}")
406
+ return {
407
+ "status": "error",
408
+ "message": "Unsupported file format"
409
+ }, None
410
  else:
411
  # No input provided
412
  return {
 
414
  "message": "Please provide either text or upload a file"
415
  }, None
416
 
417
+ print("Input", input_data)
418
  # Process using the unified function
419
  return predict_unified(input_data)
420