mirror of
https://github.com/DS4SD/docling.git
synced 2025-07-27 04:24:45 +00:00
feat: add coverage_threshold to skip OCR for small images
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
This commit is contained in:
parent
a00c937e19
commit
ca9f940c8f
@ -22,6 +22,9 @@ class TableStructureOptions(BaseModel):
|
||||
|
||||
class OcrOptions(BaseModel):
|
||||
kind: str
|
||||
coverage_threshold: float = (
|
||||
0.3 # percentage of the area which must be covered by bitmaps for triggering OCR
|
||||
)
|
||||
|
||||
|
||||
class EasyOcrOptions(OcrOptions):
|
||||
|
@ -68,6 +68,10 @@ class BaseOcrModel:
|
||||
bitmap_rects = []
|
||||
coverage, ocr_rects = find_ocr_rects(page.size, bitmap_rects)
|
||||
|
||||
# skip OCR if the bitmap area on the page is smaller than the options threshold
|
||||
if coverage < self.options.coverage_threshold:
|
||||
return []
|
||||
|
||||
# return full-page rectangle if sufficiently covered with bitmaps
|
||||
if coverage > BITMAP_COVERAGE_TRESHOLD:
|
||||
return [
|
||||
|
@ -42,3 +42,23 @@ def test_e2e_conversions(test_doc_path):
|
||||
doc_result: ConversionResult = converter.convert(test_doc_path)
|
||||
|
||||
assert doc_result.status == ConversionStatus.SUCCESS
|
||||
|
||||
|
||||
def test_ocr_coverage_threshold(test_doc_path):
|
||||
pipeline_options = PdfPipelineOptions()
|
||||
pipeline_options.do_ocr = True
|
||||
pipeline_options.ocr_options.coverage_threshold = 1.1
|
||||
|
||||
converter = DocumentConverter(
|
||||
format_options={
|
||||
InputFormat.PDF: PdfFormatOption(
|
||||
pipeline_options=pipeline_options,
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
test_doc_path = Path("./tests/data_scanned/ocr_test.pdf")
|
||||
doc_result: ConversionResult = converter.convert(test_doc_path)
|
||||
|
||||
# this should have generated no results, since we set a very high threshold
|
||||
assert len(doc_result.document.texts) == 0
|
||||
|
Loading…
Reference in New Issue
Block a user