Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, File, UploadFile | |
| import fitz # PyMuPDF | |
| import pytesseract | |
| from PIL import Image | |
| import io | |
| app = FastAPI() | |
| async def extract_text(file: UploadFile = File(...)): | |
| try: | |
| contents = await file.read() | |
| doc = fitz.open(stream=contents, filetype="pdf") | |
| extracted_text = "" | |
| for i, page in enumerate(doc): | |
| extracted_text += f"\n\n--- Page {i + 1} ---\n\n" + page.get_text() | |
| return {"filename": file.filename, "text": extracted_text} | |
| except Exception as e: | |
| return {"error": str(e)} | |
| async def extract_text_ocr(file: UploadFile = File(...)): | |
| try: | |
| contents = await file.read() | |
| doc = fitz.open(stream=contents, filetype="pdf") | |
| full_text = "" | |
| for i in range(len(doc)): | |
| page = doc.load_page(i) | |
| # Normal text | |
| text = page.get_text() | |
| # Render page to an image | |
| pix = page.get_pixmap() | |
| img = Image.open(io.BytesIO(pix.tobytes())) | |
| # OCR text | |
| ocr_text = pytesseract.image_to_string(img) | |
| full_text += f"\n\n--- Page {i + 1} ---\n\n" | |
| full_text += text + "\n" | |
| full_text += "[OCR Text]\n" + ocr_text | |
| return {"filename": file.filename, "text": full_text} | |
| except Exception as e: | |
| return {"error": str(e)} | |