def processText(arquivos=funcoesUteis.buscaArquivosEmPasta(
    caminho=f"{caminho_base}temp", extensao=(".JPG")),
                separadorCampos=' '):
    for arquivo in arquivos:
        with open(arquivo, 'rt') as csvfile:
            csvreader = csv.reader(csvfile, delimiter=separadorCampos)
            for row in csvreader:
                numCampoNota = -1

                # primeiro lê os campos da linha pra identificar onde está a nota
                for key, campo in enumerate(row):
                    try:
                        nota = int(campo)
                    except Exception:
                        nota = 0

                    tracoProximoCampo = row[key + 1]
                    if (tracoProximoCampo[0] == "-"):
                        tracoProximoCampo = True
                    else:
                        tracoProximoCampo = False

                    if nota > 0 and tracoProximoCampo is True:
                        numCampoNota = key
                        break

                nomeFornecedor = row[1:numCampoNota]

                nota = row[numCampoNota]
Example #2
0
def leLinhasPDF(arquivos=funcoesUteis.buscaArquivosEmPasta(
    caminho=f"{caminho_base}temp", extensao=(".TXT"))):
    lista_arquivos = {}
    lista_linha = []

    extratos = f"{caminho_base}temp\\extrato_cartao_temp.csv"
    extratos = open(extratos, "a", encoding='utf-8')

    for arquivo in arquivos:
        # pra cada arquivo criar uma posição no dicionário
        lista_arquivos[arquivo] = lista_linha[:]

        # le o arquivo e grava num vetor
        with open(arquivo, 'rt') as txtfile:
            for linha in txtfile:
                linha = funcoesUteis.removerAcentos(
                    str(linha).upper().replace("\n", ""))
                # linha = linha.strip()
                # ignora linhas totalmente em branco
                if (funcoesUteis.trataCampoTexto(linha) == ""):
                    continue
                lista_linha.append(linha)
                extratos.write(f"{linha}\n")
            lista_arquivos[arquivo] = lista_linha[:]
            lista_linha.clear()
        txtfile.close()

    extratos.close()

    return lista_arquivos
def imageToText(arquivos=funcoesUteis.buscaArquivosEmPasta(
    caminho=f"{caminho_base}temp", extensao=(".JPG"))):
    # print(arquivos)
    for arquivo in arquivos:
        nome_arquivo = os.path.basename(arquivo)
        saida = f"{caminho_base}temp\\" + str(
            nome_arquivo[0:len(nome_arquivo) - 4]) + ".txt"
        saida = open(saida, "w", encoding='utf-8')
        phrase = ocr.image_to_string(Image.open(arquivo), lang='por')
        saida.write(phrase)
        saida.close()
def ImageToJPG(arquivos=funcoesUteis.buscaArquivosEmPasta(
    caminho=f"{caminho_base}entrada", extensao=(".BMP", ".PNG", ".GIF"))):
    for arquivo in arquivos:
        nome_arquivo = os.path.basename(arquivo)
        saida = f"{caminho_base}temp\\" + str(
            nome_arquivo[0:len(nome_arquivo) - 4]) + ".jpg"
        try:

            # chama o comando pra transformação do PDF
            comando = f"convert \"{arquivo}[0]\" -size 1920x1080 \"{saida}\""
            os.system(comando)
        except Exception as ex:
            print(
                f"Nao foi possivel transformar o arquivo \"{saida}\". O erro é: {str(ex)}"
            )
Example #5
0
def PDFToText(arquivos=funcoesUteis.buscaArquivosEmPasta(
    caminho=f"{caminho_base}entrada", extensao=(".PDF")),
              mode="simple"):
    for arquivo in arquivos:
        nome_arquivo = os.path.basename(arquivo)
        saida = f"{caminho_base}temp\\" + str(
            nome_arquivo[0:len(nome_arquivo) - 4]) + ".txt"
        try:

            # verifica se o Windows é 32 ou 64 bits
            architecture = platform.architecture()
            if architecture[0].count('32') > 0:
                pdftotext = "pdftotext32.exe"
            else:
                pdftotext = "pdftotext64.exe"

            # chama o comando pra transformação do PDF
            comando = f"{caminho_base}bin\\{pdftotext} -{mode} \"{arquivo}\" \"{saida}\""
            os.system(comando)
        except Exception as ex:
            print(
                f"Nao foi possivel transformar o arquivo \"{saida}\". O erro é: {str(ex)}"
            )
def leXls_Xlsx(arquivos=funcoesUteis.buscaArquivosEmPasta("entrada",
                                                          extensao=(".XLS",
                                                                    "XLSX"))):
    lista_dados = []
    dados_linha = []
    for arquivo in arquivos:

        nome_arquivo = os.path.basename(arquivo)
        saida = "temp\\" + nome_arquivo[0:len(nome_arquivo) - 4] + ".csv"
        saida = open(saida, "w", encoding='utf-8')

        try:
            arquivo = xlrd.open_workbook(arquivo,
                                         logfile=open(os.devnull, 'w'))
        except Exception:
            arquivo = xlrd.open_workbook(arquivo,
                                         logfile=open(os.devnull, 'w'),
                                         encoding_override='Windows-1252')

    # guarda todas as planilhas que tem dentro do arquivo excel
        planilhas = arquivo.sheet_names()

        # lê cada planilha
        for p in planilhas:

            # pega o nome da planilha
            planilha = arquivo.sheet_by_name(p)

            # pega a quantidade de linha que a planilha tem
            max_row = planilha.nrows
            # pega a quantidade de colunca que a planilha tem
            max_column = planilha.ncols

            # lê cada linha e coluna da planilha e imprime
            for i in range(0, max_row):

                valor_linha = planilha.row_values(rowx=i)

                # ignora linhas em branco
                if valor_linha.count("") == max_column:
                    continue

                # lê as colunas
                for j in range(0, max_column):

                    # as linhas abaixo analisa o tipo de dado que está na planilha e retorna no formato correto, sem ".0" para números ou a data no formato numérico
                    tipo_valor = planilha.cell_type(rowx=i, colx=j)
                    valor_celula = funcoesUteis.removerAcentosECaracteresEspeciais(
                        str(planilha.cell_value(rowx=i, colx=j)))
                    if tipo_valor == 2:
                        valor_casas_decimais = valor_celula.split('.')
                        valor_casas_decimais = valor_casas_decimais[1]
                        if int(valor_casas_decimais) == 0:
                            valor_celula = valor_celula.split('.')
                            valor_celula = valor_celula[0]
                    elif tipo_valor == 3:
                        valor_celula = float(
                            planilha.cell_value(rowx=i, colx=j))
                        valor_celula = xlrd.xldate.xldate_as_datetime(
                            valor_celula, datemode=0)
                        valor_celula = valor_celula.strftime("%d/%m/%Y")

                    # retira espaços e quebra de linha da célula
                    valor_celula = str(valor_celula).strip().replace('\n', '')

                    # gera o resultado num arquivo
                    resultado = valor_celula + ';'
                    resultado = resultado.replace('None', '')
                    saida.write(resultado)

                    # adiciona o valor da célula na lista de dados_linha
                    dados_linha.append(valor_celula)

                # faz uma quebra de linha para passar pra nova linha
                saida.write('\n')

                # copia os dados da linha para o vetor de lista_dados
                lista_dados.append(dados_linha[:])

                # limpa os dados da linha para ler a próxima
                dados_linha.clear()

        # fecha o arquivo
        saida.close()

    # retorna uma lista dos dados
    return lista_dados