Divida facilmente documentos complexos da mesma forma que um ser humano faria.
A fragmentação de documentos é uma tarefa desafiadora que sustenta qualquer sistema RAG. Resultados de alta qualidade são essenciais para uma aplicação de IA bem-sucedida, mas a maioria das bibliotecas de código aberto tem capacidade limitada de lidar com documentos complexos.
O Open Parse foi projetado para preencher essa lacuna, fornecendo uma biblioteca flexível e fácil de usar, capaz de discernir visualmente os layouts dos documentos e dividi-los de maneira eficaz.
A divisão de texto converte um arquivo em texto bruto e o divide.
Existem algumas bibliotecas fantásticas, como o analisador de layout.
? Orientado visualmente: o Open-Parse analisa visualmente os documentos para obter uma entrada LLM superior, indo além da divisão ingênua de texto.
✍️ Suporte Markdown: Suporte básico de markdown para análise de títulos, negrito e itálico.
Suporte a tabelas de alta precisão: Extraia tabelas em formatos Markdown limpos com uma precisão que supera as ferramentas tradicionais.
Extensível: implemente facilmente suas próprias etapas de pós-processamento.
Intuitivo: ótimo suporte ao editor. Conclusão em todos os lugares. Menos tempo de depuração.
Fácil: Projetado para ser fácil de usar e aprender. Menos tempo lendo documentos.
import openparse
basic_doc_path = "./sample-docs/mobile-home-manual.pdf"
parser = openparse . DocumentParser ()
parsed_basic_doc = parser . parse ( basic_doc_path )
for node in parsed_basic_doc . nodes :
print ( node )
? Experimente o caderno de amostra aqui
A fragmentação de documentos consiste fundamentalmente em agrupar nós semânticos semelhantes. Ao incorporar o texto de cada nó, podemos agrupá-los com base em sua semelhança.
from openparse import processing , DocumentParser
semantic_pipeline = processing . SemanticIngestionPipeline (
openai_api_key = OPEN_AI_KEY ,
model = "text-embedding-3-large" ,
min_tokens = 64 ,
max_tokens = 1024 ,
)
parser = DocumentParser (
processing_pipeline = semantic_pipeline ,
)
parsed_content = parser . parse ( basic_doc_path )
? Exemplo de caderno aqui
Usa pydantic nos bastidores para que você possa serializar resultados com
parsed_content . dict ()
# or to convert to a valid json dict
parsed_content . json ()
Python 3.8+
Lidando com PDFs:
Extraindo tabelas:
pip install openparse
Ativando o suporte OCR :
PyMuPDF já conterá toda a lógica para suportar funções de OCR. Mas também precisa dos dados de suporte de idioma do Tesseract, portanto a instalação do Tesseract-OCR ainda é necessária.
A localização da pasta de suporte ao idioma deve ser comunicada armazenando-a na variável de ambiente "TESSDATA_PREFIX" ou como parâmetro nas funções aplicáveis.
Portanto, para uma funcionalidade de OCR funcional, certifique-se de preencher esta lista de verificação:
Instale o Tesseract.
Localize a pasta de suporte de idioma do Tesseract. Normalmente você encontrará aqui:
Windows: C:/Program Files/Tesseract-OCR/tessdata
Sistemas Unix: /usr/share/tesseract-ocr/5/tessdata
macOS (instalado via Homebrew):
/opt/homebrew/share/tessdata
/opt/homebrew/Cellar/tesseract/<version>/share/tessdata/
Defina a variável de ambiente TESSDATA_PREFIX
Windows: setx TESSDATA_PREFIX "C:/Program Files/Tesseract-OCR/tessdata"
Sistemas Unix: declare -x TESSDATA_PREFIX=/usr/share/tesseract-ocr/5/tessdata
macOS (instalado via Homebrew): export TESSDATA_PREFIX=$(brew --prefix tesseract)/share/tessdata
Nota: Em sistemas Windows, isso deve acontecer fora do Python – antes de iniciar seu script. Apenas manipular os.environ não funcionará!
Este repositório fornece um recurso opcional para analisar o conteúdo de tabelas usando uma variedade de modelos de aprendizado profundo.
pip install "openparse[ml]"
Em seguida, baixe os pesos do modelo com
openparse-download
Você pode executar a análise com o seguinte.
parser = openparse . DocumentParser (
table_args = {
"parsing_algorithm" : "unitable" ,
"min_table_confidence" : 0.8 ,
},
)
parsed_nodes = parser . parse ( pdf_path )
Observe que atualmente usamos transformadores de tabela para todas as detecção de tabelas e achamos que seu desempenho é inferior. Isso afeta negativamente os resultados posteriores da unidade. Se você conhece um modelo melhor, abra um problema - a equipe unitable mencionou que também poderá adicionar isso em breve.
https://github.com/Filimoa/open-parse/tree/main/src/cookbooks
https://filimoa.github.io/open-parse/
Seu caso de uso precisa de algo especial? Entre em contato.