## OCR / Nota Fiscal de Serviço / SP / São Paulo</h3>
Extrai dados via OCR do PDF ou da imagem de uma Nota Fiscal Eletrônica de Serviços na Prefeitura do município de São Paulo (a confiabilidade dos dados retornados não é 100% por se tratar de um procedimento de OCR).

### Request</h4>
URL for POST: `https://api.infosimples.com/api/v2/imagens/ocr/nfse/sp/sao-paulo`



| Parameter      | Description                                                                 |
| -------------- | --------------------------------------------------------------------------- |
| token*         | The token that will authenticate and authorize the request.                 |
| pdf_base64**   | Arquivo PDF da NFS-e convertido para uma string codificada em Base64.       |
| image_base64** | Arquivo de imagem da NFS-e convertido para uma string codificada em Base64. |

> * Required parameter.

> ** Optional parameter. Sometimes it is necessary to set at least one of the optional parameters for the service to work properly.


### Response examples (OK)
```json
{
  "code": 200,
  "code_message": "A requisição foi processada com sucesso.",
  "errors": [],
  "header": {
    "api_version": "v2",
    "product": "Imagens",
    "service": "ocr/nfse/sp/sao-paulo",
    "parameters": {
      "image_base64_md5": "bf12fd72075cf2eb64c38dd6c7453cd9"
    },
    "client_name": "Infosimples",
    "token_name": "Produção",
    "billable": true,
    "price": "0.1",
    "requested_at": "2021-12-03T14:11:02.000-03:00",
    "elapsed_time_in_milliseconds": 183,
    "remote_ip": "111.111.111.111",
    "signature": "U2FsdGVkX19FEEUlfx8TcUvE+LYF3pk74DH+WERJzoq7hMud55VKzHHxW7bohkz24YjBBMg+tlhw1CtcuIQLQw=="
  },
  "data_count": 1,
  "data": [
    {
      "cancelada": false,
      "logo_visivel": true,
      "ocr_codigo_servico": "1111 - Exemplo de serviço",
      "ocr_codigo_verificacao": "XXXX-XXXX",
      "ocr_discriminacao": "Exemplo de discriminação",
      "ocr_emissao_datahora": "06/01/2021 13:59:22",
      "ocr_intermediario_cpf_cnpj": "12.345.678/9012-34",
      "ocr_intermediario_nome": "Exemplo de Nome",
      "ocr_municipio_prestacao_servico": "São Paulo",
      "ocr_numero": "00000000",
      "ocr_numero_inscricao_obra": "0000",
      "ocr_outras_informacoes": "Outras informações",
      "ocr_prestador_cpf_cnpj": "12345678901234",
      "ocr_prestador_endereco": "Avenida Paulista, 807. São Paulo. SP. Brasil.",
      "ocr_prestador_inscricao_municipal": "11111111",
      "ocr_prestador_municipio": "São Paulo",
      "ocr_prestador_nome": "Exemplo de Nome",
      "ocr_prestador_uf": "SP",
      "ocr_tomador_cpf_cnpj": "12345678901234",
      "ocr_tomador_email": "exemplo@email.com",
      "ocr_tomador_endereco": "Avenida Paulista, 807. São Paulo. SP. Brasil.",
      "ocr_tomador_inscricao_municipal": "11111111",
      "ocr_tomador_municipio": "São Paulo",
      "ocr_tomador_nome": "Exemplo de Nome",
      "ocr_tomador_uf": "SP",
      "ocr_valor_aliquota": "2.90",
      "ocr_valor_base_calculo": "17408.03",
      "ocr_valor_cofins": "",
      "ocr_valor_credito": "50.48",
      "ocr_valor_csll": "",
      "ocr_valor_deducoes": "0.00",
      "ocr_valor_inss": "",
      "ocr_valor_irrf": "",
      "ocr_valor_iss": "604.83",
      "ocr_valor_pispasep": "",
      "ocr_valor_total": "17408.03",
      "ocr_valor_tributos_fonte": "2689.54",
      "ocr_valor_tributos_fonte_percentual": "15.45",
      "site_receipt": "https://www.exemplo.com/exemplo-de-url"
    }
  ],
  "site_receipts": [
    "https://www.exemplo.com/exemplo-de-url"
  ]
}
````

### Code examples for API integration

#### Python
```python
# Tested with: Python 3.10.19, Python 3.14.0
import requests
import base64

url = 'https://api.infosimples.com/api/v2/imagens/ocr/nfse/sp/sao-paulo'
args = {
  "pdf_base64":   base64.b64encode(open("path/to/file", "rb").read()).decode("ascii"),
  "image_base64": base64.b64encode(open("path/to/file", "rb").read()).decode("ascii"),
  "token":        "INFORME_AQUI_O_TOKEN_DA_CHAVE_DE_ACESSO"
}

response = requests.post(url, args)
response_json = response.json()
response.close()

if response_json['code'] == 200:
  print("Successful result: ", response_json['data'])
elif response_json['code'] in range(600, 799):
  mensagem = "Unsuccessful result. Read on to learn more: \n"
  mensagem += "Code: {} ({})\n".format(response_json['code'], response_json['code_message'])
  mensagem += "; ".join(response_json['errors'])
  print(mensagem)

print("Response headers: ", response_json['header'])
```


## We are ready to help
Still have questions or need help with your integration? Contact us at <a href="mailto:suporte@infosimples.com.br">suporte@infosimples.com.br</a> and receive help from our highly qualified technical team.
