31 pontos por GN⁺ 2024-12-14 | 2 comentários | Compartilhar no WhatsApp
  • Ferramenta utilitária para converter diversos arquivos em Markdown
  • Formatos suportados:
    • PDF (.pdf), PowerPoint (.pptx), Word (.docx), Excel (.xlsx)
    • Imagens (metadados EXIF e OCR), áudio (metadados EXIF e transcrição de voz)
    • HTML (com tratamento especial especialmente para Wikipedia) e vários outros formatos baseados em texto (csv, json, xml etc.)
  • O uso da API é simples:
    from markitdown import MarkItDown  
    markitdown = MarkItDown()  
    result = markitdown.convert("test.xlsx")  
    print(result.text_content)  
    

2 comentários

 
kandk 2024-12-16

Ah, então parece que até dentro da Microsoft estão pensando em transformar isso em open source, né?

 
GN⁺ 2024-12-14
Comentários no Hacker News
  • Se você tiver o uv instalado, pode executar em um arquivo com o comando uvx markitdown path-to-file.pdf, sem instalação separada

    • Na primeira execução, ele armazena em cache os pacotes necessários e, nas execuções seguintes, reutiliza os pacotes em cache
    • Pelos testes com HTML e PDF, o desempenho pareceu bem bom
  • Tenho experiência desenvolvendo, na empresa, funcionalidades para converter arquivos em texto amigável para LLM

    • Depois de ler o código-fonte, essa implementação parece bastante razoável
    • É melhor não usar para imagens nem planilhas
    • No caso de imagens, elas podem ser passadas diretamente ao provedor de LLM, e planilhas são um ponto fraco na interpretação de tabelas em Markdown
  • Muitas startups e projetos open source tornam essa área mais complicada, mas o objetivo final é um projeto simples, fácil de entender e fácil de implantar

  • Seria bom se houvesse, no processamento de PDF, um recurso para ajustar "quanto processamento você quer"

    • Ao extrair texto de PDFs, é preciso usar heurísticas sensíveis à forma como o PDF foi exportado ou então recorrer totalmente a OCR
    • É inconveniente que o projeto fique preso a apenas uma abordagem
    • Eu não usaria recursos de fala para texto, porque têm características de desempenho diferentes dos recursos de texto para texto
  • Para processamento de PDF, talvez seja melhor integrar o PDFMiner diretamente

  • É possível usar o Pandoc para converter arquivos .docx para Markdown e outros formatos

    • O Pandoc não consegue converter arquivos do PowerPoint nem do Excel
  • Indexei um livro de RPG de mesa em PDF com layout visual complexo e muitas tabelas

    • Se isso for um wrapper do PDFMiner, não vejo qual é o valor adicional dessa ferramenta
    • Ele não reconhece nem processa tabelas, mas ao menos há um reconhecimento mínimo de células de tabela
    • Lida bem com colunas de largura variável ou texto quebrado de formas complexas
    • Insere espaços desnecessários em texto totalmente alinhado e adiciona quebras de linha desnecessárias quando há divisão de colunas no meio da frase
    • O maior problema é que ele deixa passar completamente os títulos
  • Foi inesperado, mas positivo, que não haja menção a LLM no README

    • Ler o código é interessante
    • A maior parte é código de integração em um único arquivo de 1101 linhas
  • Compartilhando uma experiência de quando enviei tarefas pelo Slack em uma aula de idiomas online

    • Enviei a tarefa em um arquivo .md, mas a professora não entendeu o formato
    • Desde então, não imaginava que encontraria alguém que preferisse documentos do Word
  • Curiosidade sobre a comparação com o docling

    • O docling usa LLM
  • Fico me perguntando se existe alguma boa biblioteca para converter de Markdown para PDF ou .docx

    • O Pandoc dá conta na maioria dos casos, mas sofre com certos itens específicos, como tabelas
  • Sendo da Microsoft, talvez consiga resultados razoáveis em metade dos casos com HTML do Outlook e .docx

    • Também avaliei a maioria das soluções pagas, mas não achei nenhuma boa o suficiente para rodar em produção
    • Vou testar essa ferramenta