fix: Implement PictureDescriptionApiOptions.bitmap_area_threshold (#1248)

fix: Implement PictureDescriptionApiOptions.picture_area_threshold

Signed-off-by: Rowan Skewes <rowan.skewes@gmail.com>
This commit is contained in:
Rowan Skewes 2025-04-11 19:14:05 +10:00 committed by GitHub
parent eef2bdea77
commit 250399948d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 4 deletions

View File

@ -213,8 +213,8 @@ class PictureDescriptionBaseOptions(BaseOptions):
batch_size: int = 8
scale: float = 2
bitmap_area_threshold: float = (
0.2 # percentage of the area for a bitmap to processed with the models
picture_area_threshold: float = (
0.05 # percentage of the area for a picture to processed with the models
)

View File

@ -63,8 +63,20 @@ class PictureDescriptionBaseModel(
elements: List[PictureItem] = []
for el in element_batch:
assert isinstance(el.item, PictureItem)
elements.append(el.item)
images.append(el.image)
describe_image = True
# Don't describe the image if it's smaller than the threshold
if len(el.item.prov) > 0:
prov = el.item.prov[0] # PictureItems have at most a single provenance
page = doc.pages.get(prov.page_no)
if page is not None:
page_area = page.size.width * page.size.height
if page_area > 0:
area_fraction = prov.bbox.area() / page_area
if area_fraction < self.options.picture_area_threshold:
describe_image = False
if describe_image:
elements.append(el.item)
images.append(el.image)
outputs = self._annotate_images(images)