Bug描述
从附加的 acciona.pdf 文件中提取表格信息的结果令人失望,而通过 tesseract
和 pdfminer
在整页上进行 OCR 的结果相当好。经过一些调试后,发现以下代码在第281行对页面的裁剪图像运行了另一个 OCR 步骤,使用 tesseract
。
这是不幸的,因为:
- 该函数已经拥有页面上的所有 LayoutElement
- 使用
tesseract
进行的额外 OCR 操作可能会产生额外的处理时间 - 对裁剪图像进行
tesseract
的结果不如在整个页面上进行的结果好。
unstructured/unstructured/partition/pdf_image/ocr.py
第256行至第289行 in daaf177
| | defsupplement_element_with_table_extraction( |
| | elements: List["LayoutElement"], |
| | image: PILImage, |
| | tables_agent: "UnstructuredTableTransformerModel", |
| | ocr_languages: str="eng", |
| | ocr_agent: OCRAgent=OCRAgent.get_instance(OCR_AGENT_TESSERACT), |
| | extracted_regions: Optional[List["TextRegion"]] =None, |
| | ) ->List["LayoutElement"]: |
| | """Supplement the existing layout with table extraction. Any Table elements |
| | that are extracted will have a metadata field "text_as_html" where |
| | the table's text content is rendered into an html string. |
| | """ |
| | |
| | table_elements= [elforelinelementsifel.type==ElementType.TABLE] |
| | forelementintable_elements: |
| | padding=env_config.TABLE_IMAGE_CROP_PAD |
| | padded_element=pad_element_bboxes(element, padding=padding) |
| | cropped_image=image.crop( |
| | ( |
| | padded_element.bbox.x1, |
| | padded_element.bbox.y1, |
| | padded_element.bbox.x2, |
| | padded_element.bbox.y2, |
| | ), |
| | ) |
| | table_tokens=get_table_tokens( |
| | table_element_image=cropped_image, |
| | ocr_languages=ocr_languages, |
| | ocr_agent=ocr_agent, |
| | extracted_regions=extracted_regions, |
| | table_element=padded_element, |
| | ) |
| | element.text_as_html=tables_agent.predict(cropped_image, ocr_tokens=table_tokens) |
| | returnelements |
重现
将 acciona.pdf 文件放入您的检出文件夹的 example-docs
文件夹中。
from unstructured.partition.pdf import partition_pdf
elements = partition_pdf(
filename="./example-docs/acciona.pdf",
strategy="hi_res",
infer_table_structure=True,
)
tables = [el for el in elements if el.category == "Table"]
print(tables[0].metadata.text_as_html)
或者查看以下 Colab 笔记本:
https://colab.research.google.com/drive/1KLtF8A_sA3cZChSvqV1cqbR4pcxXTg45?usp=sharing
该问题也存在于 Unstructured API 中。请查看以下 Colab 笔记本:
https://colab.research.google.com/drive/1fqJtUo9OIvsbEeZTgoIrJ0NrvjcHLni4?usp=sharing
1条答案
按热度按时间r6l8ljro1#
这个问题与问题#1875有关。