CogVLM2 icon indicating copy to clipboard operation
CogVLM2 copied to clipboard

文本较多的场景, 想实现 OCR-free的文本提取和表格重建,是不是需要微调才能有好的效果?

Open chopin1998 opened this issue 1 year ago • 15 comments

Feature request / 功能建议

目前的预训练模型, 简单的图片可以, 如果文字较多, 效果就不太行。。

Motivation / 动机

....

Your contribution / 您的贡献

...

chopin1998 avatar May 21 '24 10:05 chopin1998

有具体的案例吗?

mactavish91 avatar May 21 '24 10:05 mactavish91

有具体的案例吗?

比如医院的化验各种报告单、或者复杂的工程图纸、IT系统的综合日志 等等

chopin1998 avatar May 21 '24 10:05 chopin1998

image 天津医科大学总医院 CT检查报告单 检查日期:2020-10-04 影像号: 姓名:白春生 性别:女 申请医生: 病历号 年龄:64岁 来源:住院申请科室:重症医学科 检查部位:腹部 临床诊断:创伤性脾破裂:胸12椎体骨折合并截瘫[双下肢瘫痪]多发腰椎合并胸椎横突骨折腰1棘突骨折合并多发胸椎棘突骨折多发肋骨骨折:双侧胸腔积液:肺挫伤:电解质代谢紊乱:高血压:糖尿病:冠状动脉粥样硬化性心脏病:剖宫产个人史 检查方法: 全腹部CT增强 检查所见: 肝脏形态、大小正常,边缘光滑,各叶比例协调,动脉期肝实质内可见多发斑片状异常强化区,静脉期及实质期未见显示。肝内外胆管无扩张。胆囊不大,壁不厚,腔内未见异常密度影。左侧肾上腺可见环形强化结节影,脾脏形态欠规整,可见片状强化不均匀减低区。双肾可见多发低密度影,未见确切强化。胰腺形态、大小及密度未见异常。胃未充盈,其内可见管状影。所示肠管排列规整,未见积气、积液及扩张,肠间脂肪间隙密度正常。结直肠积粪。膀胱充盈欠佳,其内可见管状影。子宫形态大小正常,其内可见致密影。双附件区未见确切异常。腹腔及腹膜后未见确切肿大淋巴结。未见腹水征。所示腰椎部分椎体及横突骨质不规整。 印象: 1.考虑脾脏破裂伤 2.动脉期肝实质内多发斑片状异常强化区,考虑异常灌注 3.左侧肾上腺环形强化结节影,血肿?建议肾上腺增强检查 4.考虑双肾多发小囊肿 5.胃及膀胱管状影 6.子宫致密影 7.骨质情况请结合相关检查 报告医生: 审核医生: 报告时间:2020-10-04 注意:本报告经医生签名有效 第1页/共1页 本报告仅供医生诊断时参考,不作证明之用 红星新闻

网上找了一个例子试了试

mactavish91 avatar May 21 '24 10:05 mactavish91

感谢 回复, 但是这个太简单了。。。试试这个。。 image

如果我想提取其中全部的单项

chopin1998 avatar May 22 '24 01:05 chopin1998

感谢 回复, 但是这个太简单了。。。试试这个。。 image

如果我想提取其中全部的单项

{
"性别": "女",
"年龄": "36岁",
"医院名称": "重庆医科大学附属第一医院",
"检验科": "检验科临床检验报告单",
"仪器": "BC-6600",
"条码号": "00120003414835",
"标本种类": "全血",
"标本说明": "临床诊断:胃肠道恶性肿瘤",
"检验号": "0619",
"科室": "胃肠外科门诊",
"病员号": "006179",
"病区": "未知",
"床号": "未知",
"项目": [
"WBC",
"RBC",
"Hb",
"HCT",
"MCV",
"MCH",
"MCHC",
"PLT",
"MPV",
"PCT",
"NEUT%",
"LYM%",
"MONO%",
"EO%"
],
"参考区间": [
"3.5-9.5 10^9/L",
"3.80-5.10 10^12/L",
"115-150 g/L",
"35-45%",
"82-100 fL",
"27-34 pg",
"316.00-354.00 g/L",
"101-320 10^9/L",
"7.6-13.2 fL",
"0.1-0.5%",
"40.0-75.0%",
"20.0-50.0%",
"3.0-10.0%",
"0.4-8%"
],
"结果": [
"4.94",
"3.88",
"122.0",
"37.20",
"95.9",
"31.4",
"328",
"200",
"9.5",
"0.19",
"55.4",
"34.0",
"5.4",
"4.6"
],
"检查时间": "2022-07-12 09:42",
"接收时间": "2022-07-12 10:12",
"报告时间": "2022-07-12 11:24",
"送检医生": "张军",
"检验者": "周易",
"审核者": "刘瑞玲",
"打印地点": "2-1F-XC02",
"打印者": "自助机",
"实验室地址": "重庆市渝中区袁家岗友谊路1号",
"实验室申明": "样本保留两天。如有疑问电话咨询023-8901221"
}

kkiskkk avatar May 22 '24 02:05 kkiskkk

感谢 回复, 但是这个太简单了。。。试试这个。。 image 如果我想提取其中全部的单项

{ "性别": "女", "年龄": "36岁", "医院名称": "重庆医科大学附属第一医院", "检验科": "检验科临床检验报告单", "仪器": "BC-6600", "条码号": "00120003414835", "标本种类": "全血", "标本说明": "临床诊断:胃肠道恶性肿瘤", "检验号": "0619", "科室": "胃肠外科门诊", "病员号": "006179", "病区": "未知", "床号": "未知", "项目": [ "WBC", "RBC", "Hb", "HCT", "MCV", "MCH", "MCHC", "PLT", "MPV", "PCT", "NEUT%", "LYM%", "MONO%", "EO%" ], "参考区间": [ "3.5-9.5 10^9/L", "3.80-5.10 10^12/L", "115-150 g/L", "35-45%", "82-100 fL", "27-34 pg", "316.00-354.00 g/L", "101-320 10^9/L", "7.6-13.2 fL", "0.1-0.5%", "40.0-75.0%", "20.0-50.0%", "3.0-10.0%", "0.4-8%" ], "结果": [ "4.94", "3.88", "122.0", "37.20", "95.9", "31.4", "328", "200", "9.5", "0.19", "55.4", "34.0", "5.4", "4.6" ], "检查时间": "2022-07-12 09:42", "接收时间": "2022-07-12 10:12", "报告时间": "2022-07-12 11:24", "送检医生": "张军", "检验者": "周易", "审核者": "刘瑞玲", "打印地点": "2-1F-XC02", "打印者": "自助机", "实验室地址": "重庆市渝中区袁家岗友谊路1号", "实验室申明": "样本保留两天。如有疑问电话咨询023-8901221" }

是啊, 这就没有提取完整。。漏了很多 我也试着用提示词引导。。但是效果不好。

之前用 qwen收费的那个plus/max的 vl, 效果会好一些, 但是依然不能100%, 甚至不能90%。

我自己用donut训练过, 关系对应的效果还可以, 但是因为不是大模型的,换一种图又不行了,而且不知道为什么在一些细节识别上,反而不如传统OCR。

然后也试过先用传统OCR去扫描出项目名, 然后生成提示词给多模态, 引导效果会更好一些, 不过这个方法也比较依赖前期OCR的结果,如果图片歪斜什么的也会出问题。

所以想知道这种稍微“复杂”一些的, 能不能通过微调 CogVLM2 获得更好的 ocr-free 的提取效果。

chopin1998 avatar May 22 '24 02:05 chopin1998

感谢 回复, 但是这个太简单了。。。试试这个。。 image

如果我想提取其中全部的单项

image 线上demo试了一下是可以的,是不是生成参数没调整好

mactavish91 avatar May 22 '24 04:05 mactavish91

感谢 回复, 但是这个太简单了。。。试试这个。。 image 如果我想提取其中全部的单项

image 线上demo试了一下是可以的,是不是生成参数没调整好

不是。。。这个结果不全呀。。。原图中有20多个项目, 这个输出只有十来个

我也试着用提示词引导。。但是效果不好。

之前用 qwen收费的那个plus/max的 vl, 效果会好一些, 但是依然不能100%, 甚至不能90%。

我自己用donut训练过, 关系对应的效果还可以, 但是因为不是大模型的,换一种图又不行了,而且不知道为什么在一些细节识别上,反而不如传统OCR。

然后也试过先用传统OCR去扫描出项目名, 然后生成提示词给多模态, 引导效果会更好一些, 不过这个方法也比较依赖前期OCR的结果,如果图片歪斜什么的也会出问题。

所以想知道这种稍微“复杂”一些的, 能不能通过微调 CogVLM2 获得更好的 ocr-free 的提取效果。

chopin1998 avatar May 22 '24 05:05 chopin1998

感谢 回复, 但是这个太简单了。。。试试这个。。 image 如果我想提取其中全部的单项

image 线上demo试了一下是可以的,是不是生成参数没调整好

不是。。。这个结果不全呀。。。原图中有20多个项目, 这个输出只有十来个

我也试着用提示词引导。。但是效果不好。

之前用 qwen收费的那个plus/max的 vl, 效果会好一些, 但是依然不能100%, 甚至不能90%。

我自己用donut训练过, 关系对应的效果还可以, 但是因为不是大模型的,换一种图又不行了,而且不知道为什么在一些细节识别上,反而不如传统OCR。

然后也试过先用传统OCR去扫描出项目名, 然后生成提示词给多模态, 引导效果会更好一些, 不过这个方法也比较依赖前期OCR的结果,如果图片歪斜什么的也会出问题。

所以想知道这种稍微“复杂”一些的, 能不能通过微调 CogVLM2 获得更好的 ocr-free 的提取效果。

每项都对上了啊,你是说少了哪个部分

mactavish91 avatar May 22 '24 06:05 mactavish91

感谢 回复, 但是这个太简单了。。。试试这个。。 image 如果我想提取其中全部的单项

image 线上demo试了一下是可以的,是不是生成参数没调整好

不是。。。这个结果不全呀。。。原图中有20多个项目, 这个输出只有十来个 我也试着用提示词引导。。但是效果不好。 之前用 qwen收费的那个plus/max的 vl, 效果会好一些, 但是依然不能100%, 甚至不能90%。 我自己用donut训练过, 关系对应的效果还可以, 但是因为不是大模型的,换一种图又不行了,而且不知道为什么在一些细节识别上,反而不如传统OCR。 然后也试过先用传统OCR去扫描出项目名, 然后生成提示词给多模态, 引导效果会更好一些, 不过这个方法也比较依赖前期OCR的结果,如果图片歪斜什么的也会出问题。 所以想知道这种稍微“复杂”一些的, 能不能通过微调 CogVLM2 获得更好的 ocr-free 的提取效果。

每项都对上了啊,你是说少了哪个部分

图中 的单项检测是两列。。

而且我的结果通常只有左边一半, 有时候还不全。。你的提示词是什么?

chopin1998 avatar May 22 '24 06:05 chopin1998

感谢 回复, 但是这个太简单了。。。试试这个。。 image 如果我想提取其中全部的单项

image 线上demo试了一下是可以的,是不是生成参数没调整好

不是。。。这个结果不全呀。。。原图中有20多个项目, 这个输出只有十来个 我也试着用提示词引导。。但是效果不好。 之前用 qwen收费的那个plus/max的 vl, 效果会好一些, 但是依然不能100%, 甚至不能90%。 我自己用donut训练过, 关系对应的效果还可以, 但是因为不是大模型的,换一种图又不行了,而且不知道为什么在一些细节识别上,反而不如传统OCR。 然后也试过先用传统OCR去扫描出项目名, 然后生成提示词给多模态, 引导效果会更好一些, 不过这个方法也比较依赖前期OCR的结果,如果图片歪斜什么的也会出问题。 所以想知道这种稍微“复杂”一些的, 能不能通过微调 CogVLM2 获得更好的 ocr-free 的提取效果。

每项都对上了啊,你是说少了哪个部分

请问您的参数和prompt是怎么调的,可否提供我们参考? 感谢

kkiskkk avatar May 22 '24 06:05 kkiskkk

感谢 回复, 但是这个太简单了。。。试试这个。。 image 如果我想提取其中全部的单项

image 线上demo试了一下是可以的,是不是生成参数没调整好

不是。。。这个结果不全呀。。。原图中有20多个项目, 这个输出只有十来个 我也试着用提示词引导。。但是效果不好。 之前用 qwen收费的那个plus/max的 vl, 效果会好一些, 但是依然不能100%, 甚至不能90%。 我自己用donut训练过, 关系对应的效果还可以, 但是因为不是大模型的,换一种图又不行了,而且不知道为什么在一些细节识别上,反而不如传统OCR。 然后也试过先用传统OCR去扫描出项目名, 然后生成提示词给多模态, 引导效果会更好一些, 不过这个方法也比较依赖前期OCR的结果,如果图片歪斜什么的也会出问题。 所以想知道这种稍微“复杂”一些的, 能不能通过微调 CogVLM2 获得更好的 ocr-free 的提取效果。

每项都对上了啊,你是说少了哪个部分

求发一下Prompt

linchen111 avatar May 22 '24 08:05 linchen111

any update ??

chopin1998 avatar May 23 '24 07:05 chopin1998

感谢 回复, 但是这个太简单了。。。试试这个。。 image 如果我想提取其中全部的单项

image 线上demo试了一下是可以的,是不是生成参数没调整好

不是。。。这个结果不全呀。。。原图中有20多个项目, 这个输出只有十来个 我也试着用提示词引导。。但是效果不好。 之前用 qwen收费的那个plus/max的 vl, 效果会好一些, 但是依然不能100%, 甚至不能90%。 我自己用donut训练过, 关系对应的效果还可以, 但是因为不是大模型的,换一种图又不行了,而且不知道为什么在一些细节识别上,反而不如传统OCR。 然后也试过先用传统OCR去扫描出项目名, 然后生成提示词给多模态, 引导效果会更好一些, 不过这个方法也比较依赖前期OCR的结果,如果图片歪斜什么的也会出问题。 所以想知道这种稍微“复杂”一些的, 能不能通过微调 CogVLM2 获得更好的 ocr-free 的提取效果。

每项都对上了啊,你是说少了哪个部分

请问您的参数和prompt是怎么调的,可否提供我们参考? 感谢

参数就是demo默认的,topk=1, temp=0,8, top-p=0.4,prompt忘了是啥了,好像是输出图中的文字信息

mactavish91 avatar May 23 '24 07:05 mactavish91

感谢 回复, 但是这个太简单了。。。试试这个。。 image 如果我想提取其中全部的单项

image 线上demo试了一下是可以的,是不是生成参数没调整好

不是。。。这个结果不全呀。。。原图中有20多个项目, 这个输出只有十来个 我也试着用提示词引导。。但是效果不好。 之前用 qwen收费的那个plus/max的 vl, 效果会好一些, 但是依然不能100%, 甚至不能90%。 我自己用donut训练过, 关系对应的效果还可以, 但是因为不是大模型的,换一种图又不行了,而且不知道为什么在一些细节识别上,反而不如传统OCR。 然后也试过先用传统OCR去扫描出项目名, 然后生成提示词给多模态, 引导效果会更好一些, 不过这个方法也比较依赖前期OCR的结果,如果图片歪斜什么的也会出问题。 所以想知道这种稍微“复杂”一些的, 能不能通过微调 CogVLM2 获得更好的 ocr-free 的提取效果。

每项都对上了啊,你是说少了哪个部分

请问您的参数和prompt是怎么调的,可否提供我们参考? 感谢

参数就是demo默认的,topk=1, temp=0,8, top-p=0.4,prompt忘了是啥了,好像是输出图中的文字信息

我理解的还是要提取关键信息对,如果单纯的输出图中文字信息的话应该是可以做到的。但是按json格式列出关键信息就会缺少一列。

kkiskkk avatar May 23 '24 07:05 kkiskkk

Feature request / 功能建议

目前的预训练模型, 简单的图片可以, 如果文字较多, 效果就不太行。。

Motivation / 动机

....

Your contribution / 您的贡献

...

你可以试一试专门的表格提取模型,你这个需求应该不需要大模型,专门的表格提取模型是不是效果会好些。

hugefrog avatar May 28 '24 01:05 hugefrog

Feature request / 功能建议

目前的预训练模型, 简单的图片可以, 如果文字较多, 效果就不太行。。

Motivation / 动机

....

Your contribution / 您的贡献

...

你可以试一试专门的表格提取模型,你这个需求应该不需要大模型,专门的表格提取模型是不是效果会好些。

试了很久的paddleOCR/ donut, 都不能保证高可靠。 还是寄希望于视觉大模型

chopin1998 avatar May 28 '24 03:05 chopin1998

请不要尝试带敏感内容的图片识别

1049451037 avatar May 31 '24 05:05 1049451037

请不要尝试带敏感内容的图片识别

什么是敏感内容。。。。

chopin1998 avatar Jun 04 '24 05:06 chopin1998

应该不是敏感内容导致文字漏识别 。如果只截图右半部分是可以正确识别的。

检测报告1

模型:CogVLM2-Chat-Zh 提示词: 识别报告内容

结果:

该图片是一份医学检验报告,主要列出了不同的检验项目、对应的数值结果以及参考区间。具体内容如下:

代号 项目 结果 参考区间
BASO% 嗜碱性粒细胞百分比 0.6 0.0-1.0%
NEUT# 中性粒细胞绝对值 2.74 1.80-6.30 10^9/L
LYM# 淋巴细胞绝对值 1.68 1.10-3.20 10^9/L
MONO# 单核细胞绝对值 0.27 0.10-0.60 10^9/L
EO# 嗜酸性粒细胞绝对值 0.23 0.02-0.52 10^9/L
BASO# 嗜碱性粒细胞绝对值 0.03 0.00-0.06 10^9/L
RDW-CV 红细胞分布宽度(CV) 13.40 12-16%
P-LCR 大血小板比率 22.00 10-60%

Mike575 avatar Jun 17 '24 02:06 Mike575

模型: cogvlm2-chat-en 提示词:以键值对的形式返回报告内容 结果:

{  
  "WBC": {"value": 4.94, "range": "3.5-9.5 x 10^9/L"},  
  "RBC": {"value": 3.88, "range": "3.80-5.10 x 10^12/L"},  
  "Hb": {"value": 122.0, "range": "115-150 g/L"},  
  "HCT": {"value": 37.20, "range": "35-45 %"},  
  "MCV": {"value": 95.9, "range": "82-100 fL"},  
  "MCH": {"value": 31.4, "range": "27-34 pg"},  
  "MCHC": {"value": 328, "range": "316.00-354.00 g/L"},  
  "PLT": {"value": 200, "range": "101-320 x 10^9/L"},  
  "PDW-SD": {"value": 16.2, "range": "10-18 fL"},  
  "MPV": {"value": 9.5, "range": "7.6-13.2 fL"},  
  "PCT": {"value": 0.19, "range": "0.1-0.5 %"},  
  "NEUT%": {"value": 55.4, "range": "40.0-75.0 %"},  
  "LYM%": {"value": 34.0, "range": "20.0-50.0 %"},  
  "MONO%": {"value": 5.4, "range": "3.0-10.0 %"},  
  "EO%": {"value": 4.6, "range": "0.4-8 %"},  
  "BASO%": {"value": 0.6, "range": "0.0-1.0 %"},  
  "NEUT#": {"value": 2.74, "range": "1.80-6.30 x 10^9/L"},  
  "LYM#": {"value": 1.68, "range": "1.10-3.20 x 10^9/L"},  
  "MONO#": {"value": 0.27, "range": "0.10-0.60 x 10^9/L"},  
  "EO#": {"value": 0.23, "range": "0.02-0.52 x 10^9/L"},  
  "BASO#": {"value": 0.03, "range": "0.00-0.06 x 10^9/L"},  
  "RDW-CV": {"value": 13.40, "range": "12-16 %"},  
  "P-LCR": {"value": 22.00, "range": "10-60 %"}  
}

Mike575 avatar Jun 17 '24 02:06 Mike575