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]
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)}" )
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