NuExtract3实战问答:解决信息提取中常见的10个技术难题

NuExtract3实战问答:解决信息提取中常见的10个技术难题 NuExtract3实战问答解决信息提取中常见的10个技术难题【免费下载链接】NuExtract3项目地址: https://ai.gitcode.com/hf_mirrors/numind/NuExtract3NuExtract3是一款强大的4B视觉语言推理模型专为文档理解设计集结构化信息提取与高质量图像转Markdown转换于一体适用于扫描件、收据、表单、发票、合同或表格等各类文档的提取流程、OCR和RAG预处理。本文将解答使用NuExtract3进行信息提取时常见的10个技术难题帮助新手和普通用户轻松应对各种挑战。一、如何选择合适的提取模式NuExtract3支持推理和非推理两种提取模式很多用户在面对不同文档时不知道该如何选择。非推理模式适用于快速且确定性的提取或Markdown转换启用方式如下enable_thinking False temperature 0.2推理模式则适用于复杂文档、复杂布局、模糊字段或需要额外推理的文档结构启用方式为enable_thinking True temperature 0.6在实际应用中建议先使用非推理模式对于难以处理的示例再启用推理模式。这样既能保证大部分简单文档的处理效率又能确保复杂文档的提取准确性。二、JSON模板设计有哪些技巧JSON模板是NuExtract3进行结构化提取的关键其结构与输出JSON相同叶子值指定输出JSON叶子的类型。设计JSON模板时需要注意以下几点明确类型根据提取信息的特点选择合适的类型如“invoice_number”适合用“verbatim-string”类型以精确提取原始文本“total_amount”适合用“number”类型。使用数组和枚举对于重复出现的信息如“line_items”使用数组类型对于固定选项的信息如“item_type”使用枚举类型。合理处理可选字段如果某些字段可能不存在模型会返回“null”或“[]”无需在模板中特殊标记。以下是一个发票提取的JSON模板示例{ invoice_number: verbatim-string, invoice_date: date, total_amount: number, currency: currency, line_items: [ { description: verbatim-string, item_type: [electronics, clothing, vehicle, furniture, other], quantity: integer, unit_price: number, total: number } ] }三、如何处理多页PDF文档的提取处理多页PDF文档时可先使用PyMuPDF将PDF渲染为每页一个PNG图像然后按页面顺序将图像传递给vLLM。具体实现代码如下import base64 import json import fitz # pip install pymupdf from openai import OpenAI client OpenAI( api_keyEMPTY, base_urlhttp://localhost:8000/v1, ) def pdf_to_png_data_urls(pdf_path, dpi170): data_urls [] with fitz.open(pdf_path) as doc: for page in doc: pix page.get_pixmap(dpidpi, alphaFalse) png_bytes pix.tobytes(png) png_base64 base64.b64encode(png_bytes).decode(utf-8) data_urls.append(fdata:image/png;base64,{png_base64}) return data_urls data_urls pdf_to_png_data_urls(invoice.pdf, dpi170)通过这种方式NuExtract3能够按顺序处理多页PDF中的信息确保提取结果的完整性和准确性。四、文档转Markdown时如何保证格式准确性NuExtract3可以将文档图像转换为清晰的Markdown输出包括文本的Markdown格式、表格的HTML格式、数学公式的LaTeX格式等。为保证格式准确性可注意以下几点选择合适的模式使用modemarkdown或modecontent进行Markdown转换。调整温度参数将温度参数设置为0以获得更确定性的输出。处理复杂布局对于具有复杂布局的文档可启用推理模式帮助模型更好地理解文档结构。以下是文档转Markdown的示例代码import base64 from openai import OpenAI client OpenAI( api_keyEMPTY, base_urlhttp://localhost:8000/v1, ) def encode_image(image_path): with open(image_path, rb) as image_file: return base64.b64encode(image_file.read()).decode(utf-8) image_base64 encode_image(document.png) data_url fdata:image/png;base64,{image_base64} response client.chat.completions.create( modelnumind/NuExtract3, temperature0, messages[ { role: user, content: [ { type: image_url, image_url: {url: data_url} } ], } ], extra_body{ chat_template_kwargs: { mode: markdown, enable_thinking: False } } ) print(response.choices[0].message.content)五、如何优化vLLM部署性能NuExtract3可以通过vLLM以OpenAI兼容的API进行服务优化部署性能可从以下几个方面入手启用多令牌预测MTP通过vLLM的推测解码启用MTP可提高解码吞吐量示例命令如下--speculative-config {method: qwen3_next_mtp, num_speculative_tokens: 2}调整模型长度和图像数量如果遇到内存问题可减少最大模型长度和最大图像数量例如--max-model-len 16384 --limit-mm-per-prompt {image: 6, video: 0}选择合适的硬件根据实际需求选择性能合适的硬件以确保模型的流畅运行。六、模板类型有哪些如何正确使用NuExtract3支持多种模板类型以下是一些常见类型及其使用场景类型描述示例integer整数12, 0, -4number任意数字包括浮点数或整数3.14, -9.1, 0string通用字符串可抽象或通过推理得出Hello Worldverbatim-string严格从输入中提取保留所有字符但规范化空白/制表符为单个空格John DoedateISO 8601 兼容日期2024-01-15, 2024-01currency大写3字符ISO 4217货币代码EUR, USD正确使用模板类型可以提高提取的准确性例如提取发票日期时使用“date”类型提取金额时使用“number”类型。详细的类型说明可参考TYPES.md。七、如何处理提取结果中的空值或错误当模型未找到相关信息时会返回“null”或“[]”。对于提取结果中的空值或错误可采取以下处理方式检查模板设计确保模板中的字段与文档中的信息对应避免因模板设计不合理导致的空值。启用推理模式对于模糊或复杂的文档启用推理模式可能帮助模型更好地识别信息。人工审核对于重要的提取结果进行人工审核确保信息的准确性。八、如何使用上下文示例提升提取效果NuExtract3支持上下文示例In-Context Learning尤其适用于格式模糊或需要特定任务约定的场景。示例通过“developer”消息提供内容中的除最后一项外均为输入最后一项为预期输出。以下是一个使用上下文示例的代码import json from openai import OpenAI client OpenAI( api_keyEMPTY, base_urlhttp://localhost:8000/v1, ) template { names: [string] } response client.chat.completions.create( modelnumind/NuExtract3, temperature0, messages[ { role: developer, content: [ { type: text, text: Stephen is the manager at Susans store., }, { type: text, text: {\names\: [\-STEPHEN-\, \-SUSAN-\]}, } ], }, { role: user, content: [ { type: text, text: John went to the restaurant with Mary. James went to the cinema. } ], } ], extra_body{ chat_template_kwargs: { template: json.dumps(template, indent4), enable_thinking: False } } ) print(response.choices[0].message.content)通过提供合适的上下文示例可以引导模型按照预期的格式和规则进行提取提升提取效果。九、如何从自然语言描述生成提取模板NuExtract3可以从自然语言描述生成提取模板方便用户快速创建模板。以下是一个生成模板的示例代码from openai import OpenAI client OpenAI( api_keyEMPTY, base_urlhttp://localhost:8000/v1, ) response client.chat.completions.create( modelnumind/NuExtract3, temperature0, messages[ { role: user, content: [ { type: text, text: I want to extract the key details from a rental contract. } ], } ], extra_body{ chat_template_kwargs: { mode: template-generation } } ) print(response.choices[0].message.content)生成的模板示例如下{ contract_title: verbatim-string, landlord: verbatim-string, tenant: verbatim-string, property_address: verbatim-string, start_date: date-time, end_date: date-time, monthly_rent: number, currency: verbatim-string, deposit: number, signatories: [verbatim-string] }用户可以根据实际需求对生成的模板进行调整和优化。十、如何使用Curl进行API调用除了使用Python SDK还可以使用Curl进行API调用。以下是一个单图像结构化提取的Curl示例API_KEYEMPTY IMAGE_BASE64_FILE$(mktemp) REQUEST_BODY_FILE$(mktemp) base64 receipt.png | tr -d \n $IMAGE_BASE64_FILE TEMPLATE$(cat JSON { store: verbatim-string, date: date-time, total: number, payment_method: verbatim-string } JSON ) jq -n \ --rawfile image_base64 $IMAGE_BASE64_FILE \ --arg template $TEMPLATE \ { model: numind/NuExtract3, temperature: 0, messages: [ { role: user, content: [ { type: image_url, image_url: {url: (data:image/png;base64, $image_base64)} } ] } ], chat_template_kwargs: { template: $template, enable_thinking: false } } $REQUEST_BODY_FILE curl http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $API_KEY \ --data-binary $REQUEST_BODY_FILE rm $IMAGE_BASE64_FILE $REQUEST_BODY_FILE使用Curl调用API时需要注意正确处理图像的base64编码和JSON模板的传递确保请求格式正确。通过以上10个常见技术难题的解答相信你已经对NuExtract3的使用有了更深入的了解。NuExtract3凭借其强大的结构化信息提取和文档转Markdown能力为各类文档处理提供了高效解决方案。如果你在使用过程中遇到其他问题可参考项目的官方文档或相关资源进一步学习和探索。要开始使用NuExtract3可通过以下命令克隆仓库git clone https://gitcode.com/hf_mirrors/numind/NuExtract3希望本文能帮助你更好地利用NuExtract3进行信息提取提升工作效率 【免费下载链接】NuExtract3项目地址: https://ai.gitcode.com/hf_mirrors/numind/NuExtract3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考