mpcabete / bombcrypto-bot

This is a python bot that automatically logs in, clicks the new button, and sends heroes to work in the bombcrypto game. It is fully open source and free.
819 stars 538 forks source link

[Ajuda] OCR - pyteresseract - treinar reconhecimento #627

Closed kerferber closed 2 years ago

kerferber commented 2 years ago

Bom dia pessoal,

Estou fazendo algumas modificações no bot que fazem a leitura do saldo e posterior envio via telegram em formato texto. Fiz o print do saldo, tratei a imagem para remover ruídos, aumentar contraste, transformar em PB etc, Porém algumas vezes o OCR não consegue ler os caracteres, e acaba muitas vezes confundindo o 0 com o número 8.

Verifiquei que preciso 'TREINAR' o OCR, já criei um repositório de imagens, estou há um tempo salvando prints do saldo de hora em hora, devo ter em torno de 50 imagens.

Alguém que tenha trabalhado no antigo captcha poderia me dar uma luz neste treinamento? Já achei alguns artigos e pretendo trabalhar no final de semana, vou utilizar o VIETOcr (alguma sugestão melhor?).

Outra coisa, após realizar o 'treinamento', de que forma eu associo ele ao meu bot? Vou realizar o treinamento em meu PC windows e posteriormente pretendo instalar na minha VM, mas não faço idéia de como fazer isso. O VIETOcr irá gerar algum tipo de biblioteca para eu utilizar?

Caso alguma outra pessoa queira utilizar meu código já treinado, de que forma isso pode ser feito? Toda a ajuda é bem vinda

Desde já, obrigado.

PedroAugustoRamalhoDuarte commented 2 years ago

@kerferber fugindo um pouco das tuas perguntas, tu já tentou utilizar algum OCR já treinado tipo o da AWS?(https://aws.amazon.com/textract/)

kerferber commented 2 years ago

@kerferber fugindo um pouco das tuas perguntas, tu já tentou utilizar algum OCR já treinado tipo o da AWS?(https://aws.amazon.com/textract/)

Obrigado Pedro. Não tentei, mas é uma ótima dica.

Nao entendo muito sobre OCR. Pensei que eu tivesse que treinar de acordo com os meus caracteres. Vou testar sua dica no final de semana. Obrigado!

kerferber commented 2 years ago

@kerferber fugindo um pouco das tuas perguntas, tu já tentou utilizar algum OCR já treinado tipo o da AWS?(https://aws.amazon.com/textract/)

Infelizmente este serviço é pago. Apesar de ter um período gratuito, não pretendo pagar.

Obrigado novamente

Mas volto a questionar sobre o treinamento do Ocr

rhiroshi commented 2 years ago

voce verificou como está a saida da imagem tratada pra ver se o 0 não está com algum ruido? o tesseract é muito bom em reconhecer caracteres

kerferber commented 2 years ago

voce verificou como está a saida da imagem tratada pra ver se o 0 não está com algum ruido? o tesseract é muito bom em reconhecer caracteres

Verifiquei, está bem nítida... Fiz uma função pra rodar o OCR em todas as imagens que tenho na pasta (dexei só algumas pra não ficar muito extenso) e gravar a saída.

Abaixo segue o resultado, primeiramente o valor correto, e após o hifen o que o OCR converteu:

 8.1.png - 6.1
2.57.png - 2.57
4.12.png - 4.12
6.28.png - 6.28
   7.png - 7
0.97.png - Lod
0.04.png - 0.04
5.69.png - 5.69
3.01.png - 3.01
   0.png - a
9.28.png - 9.28
9.74.png - 9.74
6.99.png - seo]
3.17.png - 3.17

E abaixo os inputs e outputs (após tratamento): outpu 1 outputs todos

Qualquer ajuda é bem vinda, obrigado!

kerferber commented 2 years ago

Obs: Este é o código que estou utilizando:

from cv2 import cv2
import pytesseract as ocr
from PIL import Image
import time
import os, sys
import glob

#dirs = os.listdir()

for file in glob.glob('*.png'):

    image = cv2.imread(file)

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    blur = cv2.GaussianBlur(gray, (3,3), 0)
    thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
    opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)
    invert = 255 - opening

    cv2.imwrite('output'+file, invert)
    data = ocr.image_to_string(invert, lang='eng', config='--psm 10')

    print("Valor correto: "+file, "OCR: "+data)
fguide commented 2 years ago

Espero que ajude:

https://github.com/trayanmomkov/zec

kerferber commented 2 years ago

Obrigado @fguide vou olhar com calma.

Mas estive pensando, talvez em vez de usar OCR, seja mais fácil e mais assertivo comparar os número manualmente visto que são apenas 10 caracteres (0 1 2 3 4 5 6 7 8 9)... Já possuo todos eles printados, vou tentar implementar de forma manual esse reconhecimento. Apesar de não saber como começar, caso alguém tenha uma luz, novamente agradeço. Não irei desistir

fguide commented 2 years ago

Se vc nao for usar OCR nao seria mais imples tirar um print do saldo e salvar no diretorio, dai enviar via telegram/email/shared drive, etc?

Galinho90 commented 2 years ago

Bom dia pessoal,

Estou fazendo algumas modificações no bot que fazem a leitura do saldo e posterior envio via telegram em formato texto. Fiz o print do saldo, tratei a imagem para remover ruídos, aumentar contraste, transformar em PB etc, Porém algumas vezes o OCR não consegue ler os caracteres, e acaba muitas vezes confundindo o 0 com o número 8.

Verifiquei que preciso 'TREINAR' o OCR, já criei um repositório de imagens, estou há um tempo salvando prints do saldo de hora em hora, devo ter em torno de 50 imagens.

Alguém que tenha trabalhado no antigo captcha poderia me dar uma luz neste treinamento? Já achei alguns artigos e pretendo trabalhar no final de semana, vou utilizar o VIETOcr (alguma sugestão melhor?).

Outra coisa, após realizar o 'treinamento', de que forma eu associo ele ao meu bot? Vou realizar o treinamento em meu PC windows e posteriormente pretendo instalar na minha VM, mas não faço idéia de como fazer isso. O VIETOcr irá gerar algum tipo de biblioteca para eu utilizar?

Caso alguma outra pessoa queira utilizar meu código já treinado, de que forma isso pode ser feito? Toda a ajuda é bem vinda

Desde já, obrigado.

O bot do afkapp já faz isso, e é multacc. Da uma verificada. Aqui nunca mais teve atualização.

https://github.com/afkapp/bombcrypto-bcbot

fguide commented 2 years ago

Bom dia pessoal, Estou fazendo algumas modificações no bot que fazem a leitura do saldo e posterior envio via telegram em formato texto. Fiz o print do saldo, tratei a imagem para remover ruídos, aumentar contraste, transformar em PB etc, Porém algumas vezes o OCR não consegue ler os caracteres, e acaba muitas vezes confundindo o 0 com o número 8. Verifiquei que preciso 'TREINAR' o OCR, já criei um repositório de imagens, estou há um tempo salvando prints do saldo de hora em hora, devo ter em torno de 50 imagens. Alguém que tenha trabalhado no antigo captcha poderia me dar uma luz neste treinamento? Já achei alguns artigos e pretendo trabalhar no final de semana, vou utilizar o VIETOcr (alguma sugestão melhor?). Outra coisa, após realizar o 'treinamento', de que forma eu associo ele ao meu bot? Vou realizar o treinamento em meu PC windows e posteriormente pretendo instalar na minha VM, mas não faço idéia de como fazer isso. O VIETOcr irá gerar algum tipo de biblioteca para eu utilizar? Caso alguma outra pessoa queira utilizar meu código já treinado, de que forma isso pode ser feito? Toda a ajuda é bem vinda Desde já, obrigado.

O bot do afkapp já faz isso, e é multacc. Da uma verificada. Aqui nunca mais teve atualização.

https://github.com/afkapp/bombcrypto-bcbot

Acho que aqui infelizmente acabou a motivação ($$) hehe

Brincadeira a aprte, achei bacana o fork, porém cuidado com a opcao de salvar a senha do metamask, pode ser perigoso isso, recomendo nao utilizar a funcao

Galinho90 commented 2 years ago

Bom dia pessoal, Estou fazendo algumas modificações no bot que fazem a leitura do saldo e posterior envio via telegram em formato texto. Fiz o print do saldo, tratei a imagem para remover ruídos, aumentar contraste, transformar em PB etc, Porém algumas vezes o OCR não consegue ler os caracteres, e acaba muitas vezes confundindo o 0 com o número 8. Verifiquei que preciso 'TREINAR' o OCR, já criei um repositório de imagens, estou há um tempo salvando prints do saldo de hora em hora, devo ter em torno de 50 imagens. Alguém que tenha trabalhado no antigo captcha poderia me dar uma luz neste treinamento? Já achei alguns artigos e pretendo trabalhar no final de semana, vou utilizar o VIETOcr (alguma sugestão melhor?). Outra coisa, após realizar o 'treinamento', de que forma eu associo ele ao meu bot? Vou realizar o treinamento em meu PC windows e posteriormente pretendo instalar na minha VM, mas não faço idéia de como fazer isso. O VIETOcr irá gerar algum tipo de biblioteca para eu utilizar? Caso alguma outra pessoa queira utilizar meu código já treinado, de que forma isso pode ser feito? Toda a ajuda é bem vinda Desde já, obrigado.

O bot do afkapp já faz isso, e é multacc. Da uma verificada. Aqui nunca mais teve atualização. https://github.com/afkapp/bombcrypto-bcbot

Acho que aqui infelizmente acabou a motivação ($$) hehe

Brincadeira a aprte, achei bacana o fork, porém cuidado com a opcao de salvar a senha do metamask, pode ser perigoso isso, recomendo nao utilizar a funcao

A opção de salvar senha , ele digita apenas no navegador, não é enviado nada pra fora.

Mas pode deixar em “false” que não será utilizado. Até pq a senha é apenas pra navegador, o pior ele já estará mexendo que é fazer login na carteira caso caia. Se fosse palavras chaves aí sim. Mas essa senha não tem nada a ver. Pode ficar tranquilo

fguide commented 2 years ago

Bom dia pessoal, Estou fazendo algumas modificações no bot que fazem a leitura do saldo e posterior envio via telegram em formato texto. Fiz o print do saldo, tratei a imagem para remover ruídos, aumentar contraste, transformar em PB etc, Porém algumas vezes o OCR não consegue ler os caracteres, e acaba muitas vezes confundindo o 0 com o número 8. Verifiquei que preciso 'TREINAR' o OCR, já criei um repositório de imagens, estou há um tempo salvando prints do saldo de hora em hora, devo ter em torno de 50 imagens. Alguém que tenha trabalhado no antigo captcha poderia me dar uma luz neste treinamento? Já achei alguns artigos e pretendo trabalhar no final de semana, vou utilizar o VIETOcr (alguma sugestão melhor?). Outra coisa, após realizar o 'treinamento', de que forma eu associo ele ao meu bot? Vou realizar o treinamento em meu PC windows e posteriormente pretendo instalar na minha VM, mas não faço idéia de como fazer isso. O VIETOcr irá gerar algum tipo de biblioteca para eu utilizar? Caso alguma outra pessoa queira utilizar meu código já treinado, de que forma isso pode ser feito? Toda a ajuda é bem vinda Desde já, obrigado.

O bot do afkapp já faz isso, e é multacc. Da uma verificada. Aqui nunca mais teve atualização. https://github.com/afkapp/bombcrypto-bcbot

Acho que aqui infelizmente acabou a motivação ($$) hehe Brincadeira a aprte, achei bacana o fork, porém cuidado com a opcao de salvar a senha do metamask, pode ser perigoso isso, recomendo nao utilizar a funcao

A opção de salvar senha , ele digita apenas no navegador, não é enviado nada pra fora.

Mas pode deixar em “false” que não será utilizado. Até pq a senha é apenas pra navegador, o pior ele já estará mexendo que é fazer login na carteira caso caia. Se fosse palavras chaves aí sim. Mas essa senha não tem nada a ver. Pode ficar tranquilo

Sim, não manda pra fora nem nada, mas ainda assim é contra pratica de SI deixar senhas salvas em plain text, por isso nao recomendo o uso da funcao apenas.

Ainda mais se existirem outros equipametos na rede local...

kerferber commented 2 years ago

Bom dia pessoal, Estou fazendo algumas modificações no bot que fazem a leitura do saldo e posterior envio via telegram em formato texto. Fiz o print do saldo, tratei a imagem para remover ruídos, aumentar contraste, transformar em PB etc, Porém algumas vezes o OCR não consegue ler os caracteres, e acaba muitas vezes confundindo o 0 com o número 8. Verifiquei que preciso 'TREINAR' o OCR, já criei um repositório de imagens, estou há um tempo salvando prints do saldo de hora em hora, devo ter em torno de 50 imagens. Alguém que tenha trabalhado no antigo captcha poderia me dar uma luz neste treinamento? Já achei alguns artigos e pretendo trabalhar no final de semana, vou utilizar o VIETOcr (alguma sugestão melhor?). Outra coisa, após realizar o 'treinamento', de que forma eu associo ele ao meu bot? Vou realizar o treinamento em meu PC windows e posteriormente pretendo instalar na minha VM, mas não faço idéia de como fazer isso. O VIETOcr irá gerar algum tipo de biblioteca para eu utilizar? Caso alguma outra pessoa queira utilizar meu código já treinado, de que forma isso pode ser feito? Toda a ajuda é bem vinda Desde já, obrigado.

O bot do afkapp já faz isso, e é multacc. Da uma verificada. Aqui nunca mais teve atualização.

https://github.com/afkapp/bombcrypto-bcbot

Bah, obrigado pela dica.

Este bot envia saldo por telegram? Vou dar uma testada. Obrigado mesmo,

Galinho90 commented 2 years ago

Bom dia pessoal, Estou fazendo algumas modificações no bot que fazem a leitura do saldo e posterior envio via telegram em formato texto. Fiz o print do saldo, tratei a imagem para remover ruídos, aumentar contraste, transformar em PB etc, Porém algumas vezes o OCR não consegue ler os caracteres, e acaba muitas vezes confundindo o 0 com o número 8. Verifiquei que preciso 'TREINAR' o OCR, já criei um repositório de imagens, estou há um tempo salvando prints do saldo de hora em hora, devo ter em torno de 50 imagens. Alguém que tenha trabalhado no antigo captcha poderia me dar uma luz neste treinamento? Já achei alguns artigos e pretendo trabalhar no final de semana, vou utilizar o VIETOcr (alguma sugestão melhor?). Outra coisa, após realizar o 'treinamento', de que forma eu associo ele ao meu bot? Vou realizar o treinamento em meu PC windows e posteriormente pretendo instalar na minha VM, mas não faço idéia de como fazer isso. O VIETOcr irá gerar algum tipo de biblioteca para eu utilizar? Caso alguma outra pessoa queira utilizar meu código já treinado, de que forma isso pode ser feito? Toda a ajuda é bem vinda Desde já, obrigado.

O bot do afkapp já faz isso, e é multacc. Da uma verificada. Aqui nunca mais teve atualização. https://github.com/afkapp/bombcrypto-bcbot

Bah, obrigado pela dica.

Este bot envia saldo por telegram? Vou dar uma testada. Obrigado mesmo,

Sim, envia pelo Telegram.

jeffersonveloso commented 2 years ago

Mas esse bot envia a imagem ou o texto como ele quer fazer ? Eu dei uma olhada rápida no código e pelo que olhei de forma rápida ele parece enviar uma imagem.

Galinho90 commented 2 years ago

Mas esse bot envia a imagem ou o texto como ele quer fazer ? Eu dei uma olhada rápida no código e pelo que olhei de forma rápida ele parece enviar uma imagem.

Ele envia desta forma:

F205CAD6-E171-4DCE-8BCE-C0BC5EF953E3

kerferber commented 2 years ago

Se vc nao for usar OCR nao seria mais imples tirar um print do saldo e salvar no diretorio, dai enviar via telegram/email/shared drive, etc?

Sim, mas eu queria enviar o saldo em formato texto por dois motivos:

Galinho90 commented 2 years ago

Se vc nao for usar OCR nao seria mais imples tirar um print do saldo e salvar no diretorio, dai enviar via telegram/email/shared drive, etc?

Sim, mas eu queria enviar o saldo em formato texto por dois motivos:

  • consigo acompanhar a atualização do saldo diretamente no meu relógio (onde trabalho nem sempre consigo pegar o celular)
  • e pra implementar o envio por telegram do saldo em bcoins e tbm convertido pra R$

Vai ter uma atualização que vai mandar qnt vc fez . Mas ainda não tem data. Estão trabalhando ainda.

kerferber commented 2 years ago

Se vc nao for usar OCR nao seria mais imples tirar um print do saldo e salvar no diretorio, dai enviar via telegram/email/shared drive, etc?

Sim, mas eu queria enviar o saldo em formato texto por dois motivos:

  • consigo acompanhar a atualização do saldo diretamente no meu relógio (onde trabalho nem sempre consigo pegar o celular)
  • e pra implementar o envio por telegram do saldo em bcoins e tbm convertido pra R$

Vai ter uma atualização que vai mandar qnt vc fez . Mas ainda não tem data. Estão trabalhando ainda.

Atualização onde? No jogo? No bot do mpcabete? Em outros bots?

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.