| import pypdfium2 as pdfium | |
| from pypdfium2 import PdfPage | |
| from marker.schema.page import Page | |
| from marker.schema.bbox import rescale_bbox | |
| from marker.settings import settings | |
| def render_image(page: pdfium.PdfPage, dpi): | |
| image = page.render( | |
| scale=dpi / 72, | |
| draw_annots=False | |
| ).to_pil() | |
| image = image.convert("RGB") | |
| return image | |
| def render_bbox_image(page_obj: PdfPage, page: Page, bbox): | |
| png_image = render_image(page_obj, settings.IMAGE_DPI) | |
| # Rescale original pdf bbox bounds to match png image size | |
| png_bbox = [0, 0, png_image.size[0], png_image.size[1]] | |
| rescaled_merged = rescale_bbox(page.bbox, png_bbox, bbox) | |
| # Crop out only the equation image | |
| png_image = png_image.crop(rescaled_merged) | |
| png_image = png_image.convert("RGB") | |
| return png_image |