# Nanonets-OCR-s

**Nanonets-OCR-s** é um modelo OCR que converte imagens de documentos em Markdown estruturado, preservando o layout (títulos, listas, tabelas) e tags básicas. A saída é fácil de analisar e alimentar em pipelines de LLM.

## Capacidades

| Recurso | Status |
|---------|--------|
| Suporte de Longo Prazo da Azion (LTS) | ❌ |
| Comprimento do contexto | 32k tokens |
| Dados de entrada | Texto+Imagem |

## Uso 

### OCR

```ts
const modelResponse = await Azion.AI.run("nanonets/Nanonets-OCR-s", {
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/png;base64,{img_base64}"
          }
        },
        {
          "type": "text",
          "text": "Extraia o texto do documento acima como se estivesse lendo naturalmente. Retorne as tabelas em formato html. Retorne as equações em representação LaTeX. Se houver uma imagem no documento e a legenda da imagem não estiver presente, adicione uma pequena descrição da imagem dentro da tag <img></img>; caso contrário, adicione a legenda da imagem dentro de <img></img>. As marcas d'água devem ser envolvidas em colchetes. Ex: <watermark>CÓPIA OFICIAL</watermark>. Os números das páginas devem ser envoltos em colchetes. Ex: <page_number>14</page_number> ou <page_number>9/22</page_number>. Prefira usar ☐ e ☑ para caixas de seleção."
        }
      ]
    }
  ],
  "max_tokens": 500
})
```

Exemplo de resposta:

```json
{
  "id": "chatcmpl-e27716424abf4b3f891ff4850470cb09",
  "object": "chat.completion",
  "created": 1746821581,
  "model": "nanonets/Nanonets-OCR-s",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "reasoning_content": null,
        "content": "E = mc^2",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop",
      "stop_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "total_tokens": 527,
    "completion_tokens": 518,
    "prompt_tokens_details": null
  },
  "prompt_logprobs": null
}
```

## Esquema JSON

```json

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "required": [
        "messages"
    ],
    "properties": {
        "messages": {
            "type": "array",
            "items": {
                "$ref": "#/components/schemas/Message"
            }
        },
        "temperature": {
            "type": "number",
            "minimum": 0,
            "maximum": 2
        },
        "top_p": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 1
        },
        "n": {
            "type": "integer",
            "minimum": 1,
            "default": 1
        },
        "stream": {
            "type": "boolean",
            "default": false
        },
        "max_tokens": {
            "type": "integer",
            "minimum": 1
        },
        "presence_penalty": {
            "type": "number",
            "minimum": -2,
            "maximum": 2,
            "default": 0
        },
        "frequency_penalty": {
            "type": "number",
            "minimum": -2,
            "maximum": 2,
            "default": 0
        }
    },
    "components": {
        "schemas": {
            "Message": {
                "oneOf": [
                    {
                        "$ref": "#/components/schemas/SystemMessage"
                    },
                    {
                        "$ref": "#/components/schemas/UserMessage"
                    },
                    {
                        "$ref": "#/components/schemas/AssistantMessage"
                    }
                ]
            },
            "SystemMessage": {
                "type": "object",
                "required": [
                    "role",
                    "content"
                ],
                "properties": {
                    "role": {
                        "type": "string",
                        "enum": [
                            "system"
                        ]
                    },
                    "content": {
                        "$ref": "#/components/schemas/TextContent"
                    }
                }
            },
            "UserMessage": {
                "type": "object",
                "required": [
                    "role",
                    "content"
                ],
                "properties": {
                    "role": {
                        "type": "string",
                        "enum": [
                            "user"
                        ]
                    },
                    "content": {
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "array",
                                "items": {
                                    "oneOf": [
                                        {
                                            "$ref": "#/components/schemas/TextContentItem"
                                        },
                                        {
                                            "$ref": "#/components/schemas/ImageContentItem"
                                        }
                                    ]
                                }
                            }
                        ]
                    }
                }
            },
            "AssistantMessage": {
                "oneOf": [
                    {
                        "$ref": "#/components/schemas/AssistantMessageWithoutToolCalls"
                    }
                ]
            },
            "AssistantMessageWithoutToolCalls": {
                "type": "object",
                "required": [
                    "role",
                    "content"
                ],
                "properties": {
                    "role": {
                        "type": "string",
                        "enum": [
                            "assistant"
                        ]
                    },
                    "content": {
                        "$ref": "#/components/schemas/TextContent"
                    }
                },
                "not": {
                    "required": [
                        "tool_calls"
                    ]
                }
            },
            "TextContent": {
                "oneOf": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/TextContentItem"
                        }
                    }
                ],
                "description": "Conteúdo de texto que pode ser fornecido como uma string simples ou como um array de objetos TextContentItem"
            },
            "ImageContent": {
                "type": "array",
                "items": {
                    "$ref": "#/components/schemas/ImageContentItem"
                }
            },
            "TextContentItem": {
                "type": "object",
                "required": [
                    "type",
                    "text"
                ],
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "text"
                        ]
                    },
                    "text": {
                        "type": "string"
                    }
                }
            },
            "ImageContentItem": {
                "type": "object",
                "required": [
                    "type",
                    "image_url"
                ],
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "image_url"
                        ]
                    },
                    "image_url": {
                        "type": "object",
                        "required": [
                            "url"
                        ],
                        "properties": {
                            "url": {
                                "type": "string",
                                "format": "uri"
                            }
                        }
                    }
                }
            }
        }
    }
}
```