描述bug
在使用分块时,Table元素的text_as_html
属性与text
属性相比缺少了一些内容。
原因:
- 表格中的文本只能来自表格的单元格。
- 因此,如果一个Table元素有文本,它一定来自于一个或多个表格单元格。
- 因此,text_as_html表格应该用这些相同单元格中的文本填充。
重现方法
import unstructured_client
from unstructured_client.models import operations, shared
from unstructured_client.models.errors import SDKError
from unstructured.staging.base import elements_from_dicts
client = unstructured_client.UnstructuredClient(
api_key_auth="...",
server_url=" ...",
)
filename_a = r"doc.pdf"
with open(filename_a, "rb") as f:
data = f.read()
req = operations.PartitionRequest(
partition_parameters=shared.PartitionParameters(
files=shared.Files(
content=data,
file_name=filename_a,
),
strategy = "hi_res",
coordinates=True,
hi_res_model_name = "yolox",
chunking_strategy="by_page",
split_pdf_page=False,
include_page_breaks=True,
output_format = "application/json",
languages=['eng'],
),
)
resp = client.general.partition(req)
elements = elements_from_dicts(resp.elements)
tables = [e for e in elements if e.category == "Table"]
for table in tables:
dataframe = pd.read_html(e.metadata.text_as_html)
print(dataframe)
预期行为
分块后的元素text
和text_as_html
包含相同的内容(text_as_html
将该内容解析为HTML表格)。
4条答案
按热度按时间hkmswyz61#
@christinestraub
nxowjjhe2#
@mpolomdeepsense 你能分享一份你正在测试的PDF文档吗?
6tqwzwtp3#
我遇到了一个相同的问题,这是我创建的测试PDF。表格的第一行在
elements[0].text
中,但不在elements[0].metadata.text_as_html
中。它使用了这个PDF test_pdf_table.pdf 和以下代码。collect_env.py
的输出据我所知,经过深入研究代码后,问题似乎来自于
unstructured.partition.pdf_image.ocr.supplement_element_with_table_extraction
中图像的裁剪,导致表格顶部边框被切掉。这意味着tables_agent
无法将顶部行识别为一行,只能识别第二行及以后的行。将其更改为裁剪一个像素高似乎可以解决问题。mf98qq944#
我遇到了一个相同的问题,创建的测试PDF中。表格的第一行在
elements[0].text
内,但不在elements[0].metadata.text_as_html
内。它使用了这个PDF test_pdf_table.pdf 和以下代码。collect_env.py
的输出据我所知,经过深入研究代码后,问题似乎来自于
unstructured.partition.pdf_image.ocr.supplement_element_with_table_extraction
中图像的裁剪,导致表格顶部边框被切掉。这意味着tables_agent
无法将顶部行识别为一行,只能识别从第二行开始的行。将其更改为裁剪一个像素高似乎可以解决问题。你好,@alastairmarchant ,你能告诉我如何解决你之前遇到的问题吗?"Changing it to crop one pixel higher seems to fix the issue" 是什么意思?如何操作?谢谢!