Skip to content

Commit 0dfa62a

Browse files
authored
Merge pull request #207 from chaserRen/rzf
update document parser
2 parents 64f8b81 + 917b2d3 commit 0dfa62a

File tree

3 files changed

+45
-15
lines changed

3 files changed

+45
-15
lines changed

dingo/model/llm/vlm_document_parsing.py

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import base64
2+
import json
13
from typing import List
24

35
from dingo.io import Data
@@ -14,12 +16,18 @@ class VLMDocumentParsingQuality(BaseOpenAI):
1416

1517
@classmethod
1618
def build_messages(cls, input_data: Data) -> List:
19+
if isinstance(input_data.image[0], str):
20+
with open(input_data.image[0], "rb") as image_file:
21+
base64_image = base64.b64encode(image_file.read()).decode('utf-8')
22+
else:
23+
base64_image = input_data.image[0]
24+
1725
messages = [
1826
{
1927
"role": "user",
2028
"content": [
2129
{"type": "text", "text": cls.prompt.content},
22-
{"type": "image_url", "image_url": {"url": input_data.img}},
30+
{"type": "image_url", "image_url": {"url": base64_image}},
2331
{"type": "text", "text": f"Markdown:\n{input_data.content}"}
2432
]
2533
}
@@ -29,10 +37,32 @@ def build_messages(cls, input_data: Data) -> List:
2937
@classmethod
3038
def process_response(cls, response: str) -> ModelRes:
3139
log.info(response)
40+
41+
response = response.replace("```json", "")
42+
response = response.replace("```", "")
43+
44+
types = []
45+
names = []
46+
47+
if response:
48+
try:
49+
result_data = json.loads(response)
50+
errors = result_data.get("errors", [])
51+
52+
for error in errors:
53+
error_category = error.get("error_category", "")
54+
error_label = error.get("error_label", "")
55+
56+
if error_category and error_label:
57+
types.append(error_category)
58+
names.append(error_label)
59+
except json.JSONDecodeError as e:
60+
log.error(f"JSON解析错误: {e}")
61+
3262
result = ModelRes()
3363
result.error_status = False
34-
result.type = "ocr"
35-
result.name = "document_parsing"
64+
result.type = types
65+
result.name = names
3666
result.reason = [response]
3767

3868
return result

dingo/model/prompt/prompt_document_parsing.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ class PromptDocumentParsingQuality(BasePrompt):
4444
-行间公式字符识别错误: 已被识别为行间公式的区域内,字符(数字、字母、符号、运算符、向量符等)识别错误。
4545
-行间公式字符识别遗漏: 已被识别为行间公式的区域内,遗漏了原图中的字符(数字、字母、符号、运算符、向量符等)。
4646
-行内公式字符识别错误: 已被识别为行内公式的区域内,字符(数字、字母、符号、运算符、向量符等)识别错误。
47-
-行间公式角标/上下标识别错误: 已被识别为行间公式的区域内,上下标或角标的位置、内容识别错误。
48-
-行内公式角标/上下标识别错误: 已被识别为行内公式的区域内,上下标或角标的位置、内容识别错误。
49-
-行间公式编号/说明错误: 已被识别为行间公式的编号或公式旁的说明文本识别错误。
50-
-行间公式编号/说明丢失: 已被识别为行间公式的编号或公式旁的说明文本在结果中丢失。
47+
-行间公式角标或上下标识别错误: 已被识别为行间公式的区域内,上下标或角标的位置、内容识别错误。
48+
-行内公式角标或上下标识别错误: 已被识别为行内公式的区域内,上下标或角标的位置、内容识别错误。
49+
-行间公式编号或说明错误: 已被识别为行间公式的编号或公式旁的说明文本识别错误。
50+
-行间公式编号或说明丢失: 已被识别为行间公式的编号或公式旁的说明文本在结果中丢失。
5151
-联立公式结构错误: 原图中的联立公式(如使用大括号包裹的方程组),结构识别错误。
5252
-矩阵/行列式结构错误: 原图中的矩阵或行列式,其括号类型、内部结构(如行数、列数)识别错误。
5353
-特殊结构公式无法识别: 对于结构非常复杂或不常见的公式,OCR模型未能正确识别并输出有效的公式格式。
@@ -58,13 +58,13 @@ class PromptDocumentParsingQuality(BasePrompt):
5858
5959
**2.表格相关问题**
6060
-表格整体识别遗漏:原图中存在的整个表格,在转换后的文本中未找到对应的HTML<table>标签结构。
61-
-表格行/列缺失:HTML表格的<tr>(行)或<td>/<th>(列)数量明显少于原图表格应有的行数或列数,导致大块数据区域丢失。
61+
-表格行列缺失:HTML表格的<tr>(行)或<td>/<th>(列)数量明显少于原图表格应有的行数或列数,导致大块数据区域丢失。
6262
-表头区域未检测到:已检测到 <table>,但未能正确使用 <th> 标签标记表头单元格,或 <thead> 结构缺失/错误。
6363
-复杂表头结构错误:表头包含跨行(rowspan属性)或跨列(colspan属性)单元格时,转换后的HTML表格属性或结构错误。
6464
-表头单元格缺失:表头区域<th>已检测到,但遗漏了原图表头中的一个或多个单元格。
65-
-表头单元格冗余/错位:将非表头内容错误地标记为<th>,或<th>单元格的顺序、数量与原图不符。
65+
-表头单元格冗余错位:将非表头内容错误地标记为<th>,或<th>单元格的顺序、数量与原图不符。
6666
-表格主体行列数量不符: 表格主体(通常是<tbody>内的<tr>和<td>)的行数或列数与原图不一致。
67-
-单元格结构错误合并/拆分: 原图中正常的单个单元格在HTML输出中被错误地拆分成了多个<td>或<th>。原图中多个独立的单元格在HTML输出中被错误地合并成了一个<td>或<th>。原图中存在的跨行(rowspan)或跨列(colspan)单元格,在HTML输出中其属性值错误、缺失或不当应用。原始图像中应分离的表格区块,在Markdown中被错误地合并入单一<table>结构的主体行内,导致未能保持原有的分块结构。
67+
-单元格结构错误合并或拆分: 原图中正常的单个单元格在HTML输出中被错误地拆分成了多个<td>或<th>。原图中多个独立的单元格在HTML输出中被错误地合并成了一个<td>或<th>。原图中存在的跨行(rowspan)或跨列(colspan)单元格,在HTML输出中其属性值错误、缺失或不当应用。原始图像中应分离的表格区块,在Markdown中被错误地合并入单一<table>结构的主体行内,导致未能保持原有的分块结构。
6868
-单元格丢失: 在表格主体结构基本正确的情况下,某个或少数几个<td>单元格在HTML中完全丢失。
6969
-表格异常拆分:原图中一个完整的表格,被错误地识别成了多个独立的HTML<table>结构。
7070
-单元格内容错误: 无论单元格内原始内容是文本、数字、公式片段还是其他符号,只要其在HTML表格标签内的文本内容与原图不符,均归为此类。这包括字符识别错误、内容遗漏、内容冗余、标题分级错误、单元格内公式识别为文本或识别错误/丢失等。重要说明:此标签涵盖所有表格单元格内部的内容准确性问题。不再将表格内的公式错误、文本错误等单独归类到其他大类。
@@ -75,7 +75,7 @@ class PromptDocumentParsingQuality(BasePrompt):
7575
-跨栏内容合并失败: 在多栏布局的文档中,模型未能正确识别栏边界,导致不同栏的内容在输出中错误地连接或交织在一起。
7676
7777
**4.列表相关问题**
78-
-列表项异常合并/粘连: 原图中文档中的独立的列表项(有序列表或无序列表,或者(1)、(2)...样式的列表)被合并成一行。可能是多个项合并成一项,或列表项与前后文本合并。
78+
-列表项异常合并或粘连: 原图中文档中的独立的列表项(有序列表或无序列表,或者(1)、(2)...样式的列表)被合并成一行。可能是多个项合并成一项,或列表项与前后文本合并。
7979
8080
**5.标题相关问题**
8181
-标题格式丢失: 原图中的标题,在OCR结果中被识别为普通文本,丢失了标题应有的Markdown格式(如#)。
@@ -99,12 +99,12 @@ class PromptDocumentParsingQuality(BasePrompt):
9999
-标点符号丢失: 原图中的标点符号在OCR结果中丢失。
100100
-文本格式丢失: 原图中文本具有的加粗、斜体等格式在Markdown中丢失。
101101
-文本格式应用错误: 原图中没有特定格式的普通文本,在Markdown中被错误地应用了加粗、斜体等格式。
102-
-文本中引用/角标的格式丢失: 原图中文本的上标或下标,在Markdown结果中完全丢失,未通过LaTeX指数/下标或其他方式表示,或者被错误地识别为与主体文本在同一基线的普通字符。
103-
-文本中引用/角标的识别错误: 原图中文本的上标或下标属性虽然被识别(例如以LaTeX指数/下标形式出现),但其内容(如数字、字母)识别错误,或者其位置识别错误(例如上标被错误识别为下标,或反之)。
102+
-文本中引用或角标格式丢失: 原图中文本的上标或下标,在Markdown结果中完全丢失,未通过LaTeX指数/下标或其他方式表示,或者被错误地识别为与主体文本在同一基线的普通字符。
103+
-文本中引用或角标识别错误: 原图中文本的上标或下标属性虽然被识别(例如以LaTeX指数/下标形式出现),但其内容(如数字、字母)识别错误,或者其位置识别错误(例如上标被错误识别为下标,或反之)。
104104
-特殊结构识别丢失: 如考题类下划线、选项括号识别丢失。
105105
-误识别为公式格式: 原图中的非公式内容(如普通符号或文本)被错误地识别地识别为公式格式。
106106
107-
**8.页眉页脚/边注脚注混入问题**
107+
**8.页眉页脚或边注脚注混入问题**
108108
-页眉页脚混入正文:原图中的页眉页脚内容错误地出现在Markdown正文区域。
109109
-脚注边注混入正文:原图中的脚注边注内容错误地出现在Markdown正文区域。
110110

test/data/test_img_md.jsonl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"id": "1", "content": "即当 \\(x\\longrightarrow0\\) 时, \\(f(x)\\) 与 \\(6x^{2}\\) 互为等价无穷小量,故 \\(c=6,k=3\\) ,应选A.\n\n# 强化20\n\n【解析】当 \\(x\\longrightarrow0^{2}\\) 时,有\n\n\\(\\alpha^{\\prime}=\\cos x^{2}\\rightarrow1\\) ,即 \\(\\alpha\\!\\sim\\!x\\) (为 \\(x\\) 的1阶无穷小量),\n\n\\(\\beta^{\\prime}\\!=\\!\\tan x\\cdot2x\\!\\sim\\!2x^{2}\\) 即 \\(\\beta\\!\\sim\\!\\frac{2}{3}x^{3}\\) (为 \\(x\\) 的3阶无穷小量),\n\n\\(\\gamma^{\\prime}=\\sin x^{\\frac{3}{7}}\\cdot\\frac{1}{2\\sqrt{x}}-x^{\\frac{3}{7}}\\frac{1}{2\\sqrt{x}}=\\frac{1}{2}x\\) 即 \\(\\gamma\\!\\sim\\!\\frac{1}{4}x^{2}\\) (为 \\(x\\) 的2阶无穷小量),\n\n所以当 \\(x\\longrightarrow0\\) 时无穷小量从低阶到高阶的顺序为 \\(\\alpha,\\gamma,\\beta\\) 故应选B.\n\n# 强化21\n\n【解析】方法一:导数定阶法\n\n由当 \\(x\\longrightarrow0^{2}\\) 时,\n\n\\(\\left[\\int_{0}^{x}\\left(\\mathrm{e}^{t^{2}}-1\\right)\\mathrm{d}t\\right]^{\\prime}=\\mathrm{e}^{x^{2}}-1-x^{2}\\) 故 \\(\\int_{0}^{x}\\left(\\mathrm{e}^{t^{2}}-1\\right)\\mathrm{d}t=\\frac{1}{3}x^{3}\\) 为3阶无穷小量;\\(\\left[\\int_{0}^{x}\\ln\\left(1+\\sqrt{t^{2}}\\right)\\mathrm{d}t\\right]^{\\prime}=\\ln\\left(1+\\sqrt{x^{2}}\\right)\\sim\\sqrt{x^{2}}\\) 故 \\(\\int_{0}^{x}\\ln\\left(1+\\sqrt{t^{2}}\\right)\\mathrm{d}t-\\frac{2}{5}x^{\\frac{2}{3}}\\) 为 \\(\\frac{5}{2}\\) 阶无穷小量;\\(\\left[\\int_{0}^{x}\\sin t^{2}\\mathrm{d}t\\right]^{\\prime}=\\sin(\\sin x)^{2}\\cos x-x^{2}\\) 故 \\(\\int_{0}^{x}\\sin t^{2}\\mathrm{d}t-\\frac{1}{3}x^{3}\\) 为3阶无穷小量;\\(\\left[\\int_{0}^{x}(1-\\cos t)\\,\\mathrm{d}t\\right]^{\\prime}-1-\\cos x-\\frac{1}{2}x^{2}\\) 故 \\(\\int_{0}^{x}(1-\\cos t)\\,\\mathrm{d}t-\\frac{1}{6}x^{3}\\) 为3阶无穷小量;\\(\\left[\\int_{0}^{1-\\cos x}\\sqrt{\\sin^{3}t}\\,\\mathrm{d}t\\right]^{\\prime}=\\sqrt{\\sin^{3}(1-\\cos x)}\\,\\cdot\\,\\sin x-\\frac{1}{2}x^{2}\\right]^{\\frac{3}{2}}\\,\\cdot\\,x=\\frac{1}{2\\sqrt{2}}\\,x^{4}\\) 故 \\(\\int_{0}^{1-\\cos x}\\sqrt{\\sin^{3}t}\\,\\mathrm{d}t\\) 为5阶无穷小量,应选E.\n\n\n\n# 方法二:经验法,见【敲重点】\n\n对于选项A, \\(\\int_{0}^{x}\\left(\\mathrm{e}^{t^{2}}-1\\right)\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=1\\times(2+1)=3\\) 阶无穷小量;对于选项B, \\(\\int_{0}^{x}\\ln\\left(1+\\sqrt{t^{2}}\\right)\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=1\\times\\left({\\frac{3}{2}}+1\\right)={\\frac{5}{2}}\\) 阶无穷小量;对于选项C, \\(\\int_{0}^{1\\sim x}\\sin t^{2}\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=1\\times(2+1)=3\\) 阶无穷小量;对于选项D, \\(\\int_{0}^{x}\\left(1-\\cos t\\right)\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=1\\times(2+1)=3\\) 阶无穷小量,对于选项E, \\(\\int_{0}^{1-\\cos x}\\sqrt{\\sin^{3}t}\\,\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=2\\times\\left({\\frac{3}{2}}+1\\right)=5\\) 阶无穷小量,故应选E.", "img": "../../test/data/c6be64e4-1dd4-4bd4-b923-55a63a6de397_page_1.jpeg"}
1+
{"id": "1", "content": "即当 \\(x\\longrightarrow0\\) 时, \\(f(x)\\) 与 \\(6x^{2}\\) 互为等价无穷小量,故 \\(c=6,k=3\\) ,应选A.\n\n# 强化20\n\n【解析】当 \\(x\\longrightarrow0^{2}\\) 时,有\n\n\\(\\alpha^{\\prime}=\\cos x^{2}\\rightarrow1\\) ,即 \\(\\alpha\\!\\sim\\!x\\) (为 \\(x\\) 的1阶无穷小量),\n\n\\(\\beta^{\\prime}\\!=\\!\\tan x\\cdot2x\\!\\sim\\!2x^{2}\\) 即 \\(\\beta\\!\\sim\\!\\frac{2}{3}x^{3}\\) (为 \\(x\\) 的3阶无穷小量),\n\n\\(\\gamma^{\\prime}=\\sin x^{\\frac{3}{7}}\\cdot\\frac{1}{2\\sqrt{x}}-x^{\\frac{3}{7}}\\frac{1}{2\\sqrt{x}}=\\frac{1}{2}x\\) 即 \\(\\gamma\\!\\sim\\!\\frac{1}{4}x^{2}\\) (为 \\(x\\) 的2阶无穷小量),\n\n所以当 \\(x\\longrightarrow0\\) 时无穷小量从低阶到高阶的顺序为 \\(\\alpha,\\gamma,\\beta\\) 故应选B.\n\n# 强化21\n\n【解析】方法一:导数定阶法\n\n由当 \\(x\\longrightarrow0^{2}\\) 时,\n\n\\(\\left[\\int_{0}^{x}\\left(\\mathrm{e}^{t^{2}}-1\\right)\\mathrm{d}t\\right]^{\\prime}=\\mathrm{e}^{x^{2}}-1-x^{2}\\) 故 \\(\\int_{0}^{x}\\left(\\mathrm{e}^{t^{2}}-1\\right)\\mathrm{d}t=\\frac{1}{3}x^{3}\\) 为3阶无穷小量;\\(\\left[\\int_{0}^{x}\\ln\\left(1+\\sqrt{t^{2}}\\right)\\mathrm{d}t\\right]^{\\prime}=\\ln\\left(1+\\sqrt{x^{2}}\\right)\\sim\\sqrt{x^{2}}\\) 故 \\(\\int_{0}^{x}\\ln\\left(1+\\sqrt{t^{2}}\\right)\\mathrm{d}t-\\frac{2}{5}x^{\\frac{2}{3}}\\) 为 \\(\\frac{5}{2}\\) 阶无穷小量;\\(\\left[\\int_{0}^{x}\\sin t^{2}\\mathrm{d}t\\right]^{\\prime}=\\sin(\\sin x)^{2}\\cos x-x^{2}\\) 故 \\(\\int_{0}^{x}\\sin t^{2}\\mathrm{d}t-\\frac{1}{3}x^{3}\\) 为3阶无穷小量;\\(\\left[\\int_{0}^{x}(1-\\cos t)\\,\\mathrm{d}t\\right]^{\\prime}-1-\\cos x-\\frac{1}{2}x^{2}\\) 故 \\(\\int_{0}^{x}(1-\\cos t)\\,\\mathrm{d}t-\\frac{1}{6}x^{3}\\) 为3阶无穷小量;\\(\\left[\\int_{0}^{1-\\cos x}\\sqrt{\\sin^{3}t}\\,\\mathrm{d}t\\right]^{\\prime}=\\sqrt{\\sin^{3}(1-\\cos x)}\\,\\cdot\\,\\sin x-\\frac{1}{2}x^{2}\\right]^{\\frac{3}{2}}\\,\\cdot\\,x=\\frac{1}{2\\sqrt{2}}\\,x^{4}\\) 故 \\(\\int_{0}^{1-\\cos x}\\sqrt{\\sin^{3}t}\\,\\mathrm{d}t\\) 为5阶无穷小量,应选E.\n\n\n\n# 方法二:经验法,见【敲重点】\n\n对于选项A, \\(\\int_{0}^{x}\\left(\\mathrm{e}^{t^{2}}-1\\right)\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=1\\times(2+1)=3\\) 阶无穷小量;对于选项B, \\(\\int_{0}^{x}\\ln\\left(1+\\sqrt{t^{2}}\\right)\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=1\\times\\left({\\frac{3}{2}}+1\\right)={\\frac{5}{2}}\\) 阶无穷小量;对于选项C, \\(\\int_{0}^{1\\sim x}\\sin t^{2}\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=1\\times(2+1)=3\\) 阶无穷小量;对于选项D, \\(\\int_{0}^{x}\\left(1-\\cos t\\right)\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=1\\times(2+1)=3\\) 阶无穷小量,对于选项E, \\(\\int_{0}^{1-\\cos x}\\sqrt{\\sin^{3}t}\\,\\mathrm{d}t\\) 为 \\(x\\longrightarrow0^{2}\\) 时的 \\(n(m+1)=2\\times\\left({\\frac{3}{2}}+1\\right)=5\\) 阶无穷小量,故应选E.", "img": "../../test/data/c6be64e4-1dd4-4bd4-b923-55a63a6de397_page_1.jpg"}

0 commit comments

Comments
 (0)