Sistema web completo para geração, curadoria e exportação de flashcards a partir de PDFs (texto ou imagem), com interface moderna, modular e responsiva. Permite upload de PDF, seleção visual de páginas, extração de texto (com OCR automático), prompts customizados por matéria, geração via OpenAI, curadoria visual, detecção de duplicatas/similares, exportação para Anki (.apkg) e barra de pesquisa inteligente.
- Upload de PDF (texto ou imagem)
- Seleção visual de páginas e miniaturas
- Extração de texto com fallback OCR (Tesseract)
- Geração de flashcards via OpenAI (prompts customizáveis)
- Curadoria visual: edição, exclusão, mesclagem, grid responsivo
- Detecção de duplicatas/similares
- Exportação para Anki (.apkg) com nome igual ao PDF
- Barra de pesquisa inteligente
- Logs detalhados e endpoints de debug
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-venv python3-pip git tesseract-ocr tesseract-ocr-por poppler-utilsgit clone https://github.com/Bidroiddroid/flashcards-rc.git
cd flashcards-rcpython3 -m venv .venv
source .venv/bin/activatepip install --upgrade pip
pip install -r requirements.txtSe necessário, adicione ao início do app.py:
import os
os.environ['TESSDATA_PREFIX'] = '/usr/share/tesseract-ocr/4.00/tessdata'python app.pyO sistema estará disponível em http://localhost:5000
Crie o arquivo /etc/systemd/system/flashcards-rc.service:
[Unit]
Description=Flashcards RC
After=network.target
[Service]
User=www-data
WorkingDirectory=/caminho/para/flashcards-rc
ExecStart=/caminho/para/flashcards-rc/.venv/bin/python app.py
Restart=always
[Install]
WantedBy=multi-user.targetAtive e inicie:
sudo systemctl daemon-reload
sudo systemctl enable --now flashcards-rc- O Tesseract e o pacote de idioma português (
tesseract-ocr-por) são obrigatórios para OCR. - O arquivo
.apkgexportado terá o mesmo nome do PDF enviado. - Para uso com OpenAI, configure sua API Key na interface.
- Para produção, recomenda-se usar um servidor WSGI (ex: gunicorn) e um proxy reverso (ex: nginx).
MIT
Contribuições e feedbacks são bem-vindos!