Spaces:
Runtime error
Runtime error
| import spaces | |
| import gradio as gr | |
| import surya.detection as detection | |
| import surya.layout as layout | |
| import os | |
| import base64 | |
| # Monkey patch to prevent spawning processes | |
| def batch_text_detection(images, model, processor, batch_size=None): | |
| preds, orig_sizes = detection.batch_detection( | |
| images, model, processor, batch_size=batch_size | |
| ) | |
| results = [] | |
| for i in range(len(images)): | |
| result = detection.parallel_get_lines(preds[i], orig_sizes[i]) | |
| results.append(result) | |
| return results | |
| detection.batch_text_detection = batch_text_detection | |
| def batch_layout_detection( | |
| images, model, processor, detection_results=None, batch_size=None | |
| ): | |
| preds, orig_sizes = layout.batch_detection( | |
| images, model, processor, batch_size=batch_size | |
| ) | |
| id2label = model.config.id2label | |
| results = [] | |
| for i in range(len(images)): | |
| result = layout.parallel_get_regions( | |
| preds[i], | |
| orig_sizes[i], | |
| id2label, | |
| detection_results[i] if detection_results else None, | |
| ) | |
| results.append(result) | |
| return results | |
| layout.batch_layout_detection = batch_layout_detection | |
| from marker.convert import convert_single_pdf | |
| from marker.models import load_all_models | |
| model_list = load_all_models() | |
| def convert(pdf_file, extract_images): | |
| global model_list | |
| full_text, images, out_meta = convert_single_pdf(pdf_file, model_list) | |
| image_data = {} | |
| if extract_images: | |
| for filename, image in images.items(): | |
| image.save(filename, "PNG") | |
| with open(filename, "rb") as f: | |
| image_bytes = f.read() | |
| image_base64 = base64.b64encode(image_bytes).decode("utf-8") | |
| image_data[filename] = image_base64 | |
| os.remove(filename) | |
| return full_text, out_meta, image_data | |
| gr.Interface( | |
| convert, | |
| inputs=[ | |
| gr.File(label="Upload PDF", type="filepath"), | |
| gr.Checkbox(label="Extract Images"), | |
| ], | |
| outputs=[ | |
| gr.Text(label="Markdown"), | |
| gr.JSON(label="Metadata"), | |
| gr.JSON(label="Images"), | |
| ], | |
| ).launch() | |