Nos últimos meses, um movimento estranho vem mexendo com o mercado de livros usados — segundo a BBC News, livreiros independentes do mundo inteiro estão recebendo megapedidos de uma empresa canadense, embarcando romances inteiros para armazéns distantes. Não é reader humano comprando papiro. É modelo de linguagem passando fome de dados. Eu trabalho com isso todo dia, então deixa eu te explicar o que está rolando por baixo dos panos — e o que isso significa para quem programa.
Por que livros, e não a internet aberta?
A primeira coisa que devs costumam perguntar: “Por que alguém pagaria para comprar livros usados se a internet é praticamente infinita?” A resposta curta é qualidade, densidade e licenciamento.
Quando você faz scrape da web aberta, encontra 80% de lixo: páginas de login, threads de fórum truncadas, textos duplicados, spam SEO e conteúdo gerado por outras IAs. Para treinar um LLM, isso é um buraco negro de budget. Livros, por outro lado, são:
- Long-form consistente — narrativa coesa, sem fragmentação.
- Linguisticamente densos — vocabulário rico, estruturas sintáticas variadas.
- Curados por humanos — passaram por revisão editorial.
- Já rotulados por gênero — ficção, técnica, filosófica, etc.
Na minha experiência construindo pipelines de dados para fine-tuning, livros oferecem aquilo que chamamos de signal-to-noise ratio altíssimo. Quando comparo um batch de 10MB de web scrap vs. 10MB de livros processados, o segundo rende muito mais em métricas como perplexity e raciocínio lógico.
O contexto jurídico: o caso Bartz vs. Anthropic
A BBC menciona que essa prática remonta a uma decisão judicial nos EUA. Estou falando do Authors Guild v. Google (sobre digitalização de livros) e, mais recentemente, do caso Bartz v. Anthropic, onde treinadores de modelos foram acusados de pirataria massiva. O ponto central é: datasets como o Books3 e o Library Genesis foram usados abertamente pela indústria, mas a área cinzenta do copyright ressurgiu com força.
O movimento atual — comprar livros usados legalmente para treinar IA — é, na prática, uma tentativa de blindagem jurídica. Se o livro foi comprado de segunda mão, o direito de first sale dá ao comprador ampla liberdade de uso. Isso não resolve 100% a questão de derivative works, mas é uma camada a mais de defesa. Já vi isso acontecer em código aberto: quando a licença fica ambígua, empresas migram para alternativas “limpas” mesmo que mais caras. Mesmo princípio.
Na Prática: o que isso muda para quem desenvolve com IA
Se você está construindo um produto com LLM — chatbot, copilot, sistema de RAG, agente autônomo —, esse apetite todo por dados impacta você em três frentes:
- Custo crescente de inferência — modelos maiores ficam mais caros de rodar. A tendência é comprimir ou destilar.
- Janela de contexto maior — modelos como Gemini 1.5 e Claude 3.5 já processam 1M+ tokens. Isso só foi possível porque os dados de treino cresceram absurdamente.
- Risco regulatório — se você usa datasets públicos para treinar ou fazer fine-tuning, documente a origem. Auditorias estão vindo.
Vou te mostrar um exemplo real de como processar texto de livros para um pipeline de treinamento. É o tipo de script que rodaria em um cluster de GPUs, mas simplifiquei para rodar local:
import re
from pathlib import Path
from transformers import AutoTokenizer
# Configuração: processar livros em texto puro para dataset de treino
BOOK_DIR = Path("./books_corpus")
OUTPUT_FILE = Path("./processed_corpus.txt")
MODEL_NAME = "gpt2" # tokenizador base para exemplificar
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
def clean_text(raw: str) -> str:
"""Remove ruído típico de OCR e mantém estrutura útil para treino."""
# Remove múltiplas linhas em branco
text = re.sub(r'\n{3,}', '\n\n', raw)
# Remove cabeçalhos/rodapés repetitivos (heurística simples)
text = re.sub(r'(?m)^\s*Page \d+.*$', '', text)
text = re.sub(r'(?m)^\s*\d+\s*$', '', text)
# Normaliza aspas tipográficas para ascii
text = text.replace('\u201c', '"').replace('\u201d', '"')
text = text.replace('\u2018', "'").replace('\u2019', "'")
# Remove espaços extras
text = re.sub(r'[ \t]+', ' ', text)
return text.strip()
def tokenize_and_count(text: str) -> int:
"""Conta tokens — útil para balancear dataset entre livros."""
return len(tokenizer.encode(text, add_special_tokens=False))
# Pipeline principal
total_tokens = 0
with OUTPUT_FILE.open("w", encoding="utf-8") as out:
for book_file in BOOK_DIR.glob("*.txt"):
raw = book_file.read_text(encoding="utf-8", errors="ignore")
cleaned = clean_text(raw)
if len(cleaned) < 50_000: # pula livros muito curtos
continue
tokens = tokenize_and_count(cleaned)
total_tokens += tokens
# Marca fim de documento com token especial (importante pro treino)
out.write(cleaned + "\n<|endoftext|>\n")
print(f"✓ {book_file.name}: {tokens:,} tokens")
print(f"\nTotal processado: {total_tokens:,} tokens")
print(f"Estimativa de epochs (contexto 8K): {total_tokens // 8192}")
Esse script é um esqueleto honesto do que se faz na indústria. Tokenização, limpeza de OCR, separação de documentos. Quando roda em escala — bilhões de tokens —, a magia (ou o desastre) acontece.
Comparação com alternativas de dataset
| Fonte | Qualidade textual | Risco jurídico | Custo | Densidade de informação |
|---|---|---|---|---|
| Livros (segunda mão) | Alta | Baixo | Médio | Alta |
| Web scrap (Common Crawl) | Muito variável | Médio | Baixo | Baixa |
| Wikipedia | Média-alta | CC-BY-SA | Zero | Média |
| GitHub público | Especializada (código) | Variável por licença | Zero | Altíssima p/ código |
| Dados sintéticos (LLM-generated) | Alta | Zero | Alto (GPU) | Média |
| Academic papers (arXiv) | Muito alta p/ STEM | Variável | Zero | Alta |
Repara: nenhuma fonte é bala de prata. O estado da arte é sempre um mix. Quem te vende “IA treinada com dados 100% sintéticos” está mentindo ou subdimensionando o produto.
Erros comuns que devs cometem com dados de livros
Quando vejo gente tentando replicar pipelines de LLM em casa, esses são os tropeços clássicos:
- Ignorar o tokenizador. Cada modelo tem seu próprio. Misturar tokenizadores gera custos invisíveis e queda de performance.
- Não deduplicar. Livros repetidos no dataset inflar seu modelo sem ganho. Use MinHash ou similar antes de treinar.
- Esquecer do EOS token entre documentos. Sem isso, o modelo aprende que um livro continua no outro — gera respostas truncadas ou alucinadas.
- Não documentar procedência. Se um auditor pedir a origem do seu dataset num fine-tune, “bailei da internet” não responde.
- Treinar em livros sem pré-processar OCR. Caracteres trocados, hifens de quebra de linha, encoding legado — tudo isso vira ruído estatístico.
Já peguei todos esses bugs em produção. O pior foi um cliente cujo modelo recomendava “comprar na Amazon” em respostas de suporte, porque palavras como “Buy” apareceram demais no dataset por causa de um OCR mal feito. Lição: garbage in, sponsored out.
O que isso significa para o ecossistema de devs
Tem três tendências que observo e que vão moldar como a gente programa até 2026:
- Modelos menores e melhor curados vencem. O boom de “quanto maior, melhor” está acabando. Phi-3, Gemma, Mistral provam que qualidade de dados > escala bruta.
- RAG com fontes proprietárias vira padrão. Comprar livros é caro e demorado. Para apps específicos, faz mais sentido alimentar o modelo com a base de conhecimento do próprio cliente.
- Auditoria de dataset vai virar requisito de compliance. Tipo ter SBOM em software, ter Datasheets for Datasets (Gebru et al., 2021) será cobrado em contratos B2B.
FAQ
1. Posso usar livros comprados legalmente para treinar meu próprio modelo?
Em jurisdições como EUA e Brasil, o direito de first sale permite uso livre do exemplar físico. Já o uso como dataset para criar um modelo novo — uma obra derivada — entra em zona cinzenta. Para uso comercial, consulte advogado especializado em propriedade intelectual.
2. Quanto custaria treinar um pequeno modelo com 100 livros?
Para um modelo de 1B–3B parâmetros com corpus de ~50 milhões de tokens (uns 150 livros médios), você gastaria algo entre US$ 200 e US$ 1.500 em horas de GPU na AWS ou RunPod, dependendo da arquitetura e do número de epochs.
3. Existe alternativa open source já pronta com livros?
Sim. O Books3 circulou como dataset aberto, mas foi removido após pressão por copyright. Atualmente, Project Gutenberg (domínio público) e o Open Library da Internet Archive são fontes seguras. Para código, o The Stack (BigCode) é referência.
4. Por que uma empresa canadense especificamente?
A BBC não citou o nome, mas o padrão de compras — pedidos grandes para armazéns canadenses — bate com empresas como a AI2 (Allen Institute) ou startups de Toronto e Montreal, ecossistemas fortes em IA. Comprar livros usados e digitalizar em escala é estratégia conhecida.
5. Isso vai acabar com o mercado de livros usados?
Pode pressionar preços para cima no curto prazo, como já vimos com out-of-print books. Mas o volume do mercado de usados é enorme — a escalabilidade de treinar modelos que justifiquem compras nesse formato é limitada. Mais provável: efeito localizado, não apocalíptico.
Conclusão direta
A IA comprando livros usados em massa não é curiosidade — é sintoma de uma indústria faminta por dados limpos. Para nós, devs, a lição é dupla: do lado técnico, datasets curados vencem scale bruta; do lado ético e jurídico, proveniência e licenciamento vão virar tema de reunião com o time legal mais cedo do que você imagina. Quando monto pipelines para clientes, hoje em dia a primeira pergunta que faço não é “qual modelo?”, é “de onde vêm seus dados de treino?“.
Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.