from typing import List from pypdfium2 import PdfDocument from surya.detection import batch_text_detection from marker.pdf.images import render_image from marker.schema.page import Page from marker.settings import settings def get_batch_size(): if settings.DETECTOR_BATCH_SIZE is not None: return settings.DETECTOR_BATCH_SIZE elif settings.TORCH_DEVICE_MODEL == "cuda": return 4 return 4 def surya_detection(doc: PdfDocument, pages: List[Page], det_model, batch_multiplier=1): processor = det_model.processor max_len = min(len(pages), len(doc)) images = [render_image(doc[pnum], dpi=settings.SURYA_DETECTOR_DPI) for pnum in range(max_len)] predictions = batch_text_detection(images, det_model, processor, batch_size=get_batch_size() * batch_multiplier) for (page, pred) in zip(pages, predictions): page.text_lines = pred