Executando verificação de segurança...
5

Pitch: Criei o AniFind: descubra de qual anime é a cena só com um print 🎬

Descubra de qual anime é a cena só com um print 🎬

Você já se pegou vendo um corte de anime e ficou curioso:

“Que anime é esse?”
“Qual episódio é essa cena?”
“Em que minuto isso acontece?”

Bom... eu também. E como desenvolvedor e fã de anime, resolvi criar uma solução pra isso.
Apresento o AniFind: uma ferramenta que reconhece cenas de anime a partir de uma imagem (frame).


🧠 O que ele faz?

Você envia um print, e o AniFind retorna:

  • Nome do anime
  • Temporada
  • Episódio
  • Minuto e segundo exato da cena
  • Dados do AniList (nota, descrição, estúdio, gêneros, etc.)
  • E até um botão pra assistir nas plataformas oficiais (Crunchyroll, YouTube, etc.)

⚠️ Observações importantes:

  • A base atual do AniFind foi treinada com episódios no formato 16:9 (widescreen).
    Isso significa que imagens nesse aspecto tendem a dar melhores resultados de similaridade.
    Imagens muito recortadas ou verticais (como prints de Shorts ou Stories) podem não ter match preciso.

  • Por enquanto, no MVP, apenas as temporadas 1 e 2 de Solo Leveling estão indexadas.
    Estou trabalhando para expandir a base de dados com mais animes em breve!


🛠️ Como funciona por trás?

O AniFind é um sistema de busca por similaridade de imagens, com foco em cenas de anime.

  1. Extraio 6 frame por segundo de cada episódio.
  2. Gero 3 tipos de hashes de imagem (pHash, aHash, dHash).
  3. Combino os hashes em vetores de alta dimensão.
  4. Indexo tudo com FAISS (do Facebook) para buscas vetoriais rápidas.
  5. Quando alguém envia um print, comparo com todos os vetores e retorno a cena mais próxima.

🔧 Stack utilizada

  • Python + FastAPI (API)
  • FAISS + NumPy
  • Redis para cache
  • Next.js + Tailwind (frontend)
  • Integração com AniList via GraphQL
  • Tudo self-hosted numa VPS (Contaboo) com Docker 🐳

👀 Quer testar?

Já está funcionando em:

🌐 https://anifind.juliomacedo.dev

Aceita .jpg, .png, .webp... pode mandar aquele print do TikTok, Instagram ou Shorts.
Se estiver em 16:9, melhor ainda 😁


🧩 Código aberto!

Se quiser explorar o código , aqui estão os repositórios:


🤝 Feedbacks

Quero muito ouvir o que você achou da ideia, da usabilidade, e dos resultados.
Essa é só a primeira versão — tem muito que quero melhorar ainda!


🔖 Tags sugeridas

#anime #faiss #fastapi #nextjs #open-source #projetos #imagem #machine-learning

Carregando publicação patrocinada...
1

Que legal!
Achei que você usava como base o trace.moe, mas pelo visto fez seu proprio sistema!

Nos meus testes tentei com imagens de hunter hunter, mas ambas resultaram em uma cena de solo leveling.

https://m.media-amazon.com/images/M/MV5BMjZmNDQ4MmYtYmJlNi00ZjQxLTgzNTktYTllMjIxYzUzMjg3XkEyXkFqcGdeQXRyYW5zY29kZS13b3JrZmxvdw@@._V1_.jpg

https://i0.wp.com/metagalaxia.com.br/wp-content/uploads/2021/03/hunterexamarc2.jpg?resize=1024%2C575&ssl=1

Um outro erro que achei foi o botão de remover imagem enviada ta abrindo o explorer do windows para procurar outra imagem, acho que o correto seria apenas remover a foto.

1

Muito obrigado por testar, Ele não achou hunter x hunte por que eu só indexei as 2 temproadas de solo leveling pra lançar esse mvp. Baixar os dados, tratar e indexar leva um bom tempo.

Arrumei o problema do botão de remover imagem abrir o explorer, agora ele só remove e só após remover vc consegue fazer um novo upload, agora tambem é possivel fazer upload só dando Control + V se você tiver copiado alguma imagem do google ou do seu desktop.

Adicionei tambem tratamentos para 404 e 500 da api, juntamente com um mínimo de Similiaridade de 75%, abaixo disso ele irá retornar 404.

Eu olhei bastante o trace.moe, olhei a abordagem que eles usaram, basicamente passo pelos mesmo problemas que eles citam no seu FAQ, imagem mts sujas, mt cortadas diminuem drasticamente a busca.

1

Cara a ideia é muito boa. Eu gostaria de ter visto uma aplicação dessa na minha adolescência, teria me poupado horas buscando animes.
Eu gostaria de apontar três pontos importantes e espero que o meu comentário te ajude de alguma forma.

  1. Eu sinceramente removeria as informações abaixo da dropzone da imagem ou deixaria escondida tipo o conteúdo para SEO que é utilizado no dolarhoje.com. Quem é leigo vai querer ler aquilo alí e não vai entender e até pode sair do seu site para procurar o que são aquelas informações
  2. Como você bem disse, a base foi treinada com episódios no formato 16:9 e teria problemas com imagens verticais como em redes sociais, mas eu acredito que esse será o seu público, então eu sugiro primeiro você colocar um tracker, caso ainda não tenha, para verificar quais dispositivos as pessoas geralmente acessa seu sistema e caso seja mais mobile, retreinar com imagens verticais o máximo que puder
  3. Como o outro amigo apontou que enviou uma imagem e foi retornado um episódio de solo leveling, o que é razoável afinal só tem esse anime na base, seria mais interessante que uma imagem que não tenha tanta relação retorne uma mensagem de erro dizendo que não foi possível encontrar o anime no momento
1

Muito obrigado pelas contribuições, acabei de adicionar uma % mínima de similiaridade para ele retornar o anime ou um 404.

Quanto a base, não sei como treinaria a base para comportar bem o aspectio ratio de celulares, eu treino usado arquivos brutos de animes, e todos eles são em 16:9, talvez teria que fazer uma conversão e dps indexar.

Mas só indexar os animes ja leva um bom tempo, ainda estou pensando em quais tecnicas usar pra miticar a questão do aspecto ratio.