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 |