PaddlePaddle / PaddleNLP

👑 Easy-to-use and powerful NLP and LLM library with 🤗 Awesome model zoo, supporting wide-range of NLP tasks from research to industrial applications, including 🗂Text Classification, 🔍 Neural Search, ❓ Question Answering, ℹ️ Information Extraction, 📄 Document Intelligence, 💌 Sentiment Analysis etc.
https://paddlenlp.readthedocs.io
Apache License 2.0
12k stars 2.92k forks source link

[Question]: UIE-X训练的识别模型会把前面一截漏掉是我的标注问题吗,检测框看起来完美覆盖识别区域输出结果却少了 #5280

Open 1061302569 opened 1 year ago

1061302569 commented 1 year ago

请提出你的问题

PaddleNLP:2.5.2

训练后发现发票号码,发票代码,纳税人识别号,开户行及账号出现没有前面一段的情况,求大神指教

发票代码是1001600111,正确的应该是011001600111 少了前面的01大部分识别都是这种情况

[{'发票代码': [{'bbox': [[743, 50, 833, 66]], 'end': 172, 'probability': 0.9878436252575185, 'start': 162, 'text': '1001600111'}], '发票号码': [{'bbox': [[747, 76, 804, 89]], 'end': 185, 'probability': 0.8219516905109003, 'start': 179, 'text': '476118'}], '名称': [{'bbox': [[180, 464, 352, 477]], 'end': 18, 'probability': 0.9827283187970188, 'start': 3, 'text': '汉堡王(北京)餐饮管理有限公司'}], '开户行及账号': [{'bbox': [[160, 527, 326, 542]], 'end': 102, 'probability': 0.9258128435754038, 'start': 81, 'text': '090945000120107016730'}], '开票日期': [{'bbox': [[730, 98, 841, 112]], 'end': 201, 'probability': 0.9958832845329937, 'start': 190, 'text': '2016年05月16日'}], '纳税人识别号': [{'bbox': [[171, 484, 289, 499]], 'end': 40, 'probability': 0.8911400524124247, 'start': 27, 'text': '0113693200784'}], '货物或应税劳务、服务名称': [{'bbox': [[52, 263, 99, 278]], 'end': 134, 'probability': 0.999429126010412, 'relations': {'单价': [{'bbox': [[554, 264, 612, 275]], 'end': 144, 'probability': 0.989352621185791, 'start': 135, 'text': '22.640000'}], '数量': [{'bbox': [[510, 264, 517, 275]], 'end': 135, 'probability': 0.9875362671468935, 'start': 134, 'text': '1'}], '税率': [{'bbox': [[758, 262, 781, 277]], 'end': 151, 'probability': 0.9964163436943494, 'start': 149, 'text': '6%'}], '税额': [{'bbox': [[870, 262, 897, 277]], 'end': 155, 'probability': 0.9939586844504085, 'start': 151, 'text': '1.36'}], '金额': [{'bbox': [[694, 262, 729, 276]], 'end': 149, 'probability': 0.9977329160697508, 'start': 144, 'text': '22.64'}]}, 'start': 130, 'text': '餐饮服务'}]}] `}NKE1{@JRV@ 74B1MYDO0N ocr_result (3) ocr_result2 (2)

Gaozhen0816 commented 1 year ago

我也有同样的问题

ZzyChris97 commented 1 year ago

我也有同样的问题 我在label stuidio上标注的框覆盖了文字,但是生成训练数据的时候就出现了丢字的问题

ZzyChris97 commented 1 year ago

我也有同样的问题 我在label stuidio上标注的框覆盖了文字,但是生成训练数据的时候就出现了丢字的问题

如果手工修正太麻烦。。。不修正个人感觉现在微调的结果很差

Gaozhen0816 commented 1 year ago

标注ocr识别可以解决

ZzyChris97 commented 1 year ago

标注ocr识别可以解决

ocr标注完后需要怎么转成训练所需要的格式呢?

Gaozhen0816 commented 1 year ago

你根据这个https://github.com/PaddlePaddle/PaddleNLP/blob/develop/applications/information_extraction/label_studio.py脚本进行修改。把ocr标注数据组织成训练所需要的格式

whisky-12 commented 1 year ago

我也有同样的问题 我在label stuidio上标注的框覆盖了文字,但是生成训练数据的时候就出现了丢字的问题

您好 打扰了,请问这个问题解决了嘛, 我们业务也遇到同样的问题

ZzyChris97 commented 1 year ago

我也有同样的问题 我在label stuidio上标注的框覆盖了文字,但是生成训练数据的时候就出现了丢字的问题

您好 打扰了,请问这个问题解决了嘛, 我们业务也遇到同样的问题 现在的处理逻辑,其实是用detection的标注方式,然后label_studio.py会利用paddleocr模型去进行文字识别和处理,生成符合格式的训练数据。

造成这个问题的原因是label_studio.py脚本中对字符的处理存在误差,生成的训练数据对格式需要是字符粒度的,现在处理逻辑是ocr出来后根据segment的字符和片段长度取平均算char box,因此如果存在漏识别的情况,会导致计算的char box不对。

  1. 解决办法可以参考上面老哥的,不用detection标注,而是用ocr标注,并且修改label_studio.py脚本;
  2. 也可以更换ocr模型 用带char box结果的ocr模型

个人觉得这部分数据标注的工作有点麻烦,后面就没继续尝试了,你可以研究下

whisky-12 commented 1 year ago

请问 2.也可以更换ocr模型 用带char box结果的ocr模型 这里可以更换哪些模型, 我看默认的是PPocr v3的

ZzyChris97 commented 1 year ago

请问 2.也可以更换ocr模型 用带char box结果的ocr模型 这里可以更换哪些模型, 我看默认的是PPocr v3的

这个我也没有继续研究了,你可以看看paddle其他开源的模型,我记得是有字符级别的

whisky-12 commented 12 months ago

请问这里提到可以使用ocr标注 ,是使用的什么软件进行标注的?有没可以推荐参考的 ,谢谢 解决办法可以参考上面老哥的,不用detection标注,而是用ocr标注,并且修改label_studio.py脚本;

whisky-12 commented 12 months ago

标注ocr识别可以解决

您好 ,请问这里后续使用的什么软件进行的ocr标注, 还请简单指点下 谢谢