Um pacote para analisar PDFs e analisar seu conteúdo usando LLMS.
Este pacote é uma melhoria baseada no conceito de GPTPDF.
O GPTPDF usa PymupDF para analisar PDFs, identificando regiões de texto e não texto. Em seguida, mescla ou filtra as regiões de texto com base em determinadas regras e insere os resultados finais em um modelo multimodal para análise. Este método é particularmente eficaz.
Com base nesse conceito, fiz algumas pequenas melhorias.
Usando um modelo de análise de layout, cada página do PDF é analisada para identificar o tipo de cada região, que inclui texto, título, figura, legenda da figura, tabela, legenda da tabela, cabeçalho, rodapé, referência e equação. As coordenadas de cada região também são obtidas.
Exemplo de resultado da análise de layout:
[{'header': ((101, 66, 436, 102), 0)},
{'header': ((1038, 81, 1088, 95), 1)},
{'title': ((106, 215, 947, 284), 2)},
{'text': ((101, 319, 835, 390), 3)},
{'text': ((100, 565, 579, 933), 4)},
{'text': ((100, 967, 573, 1025), 5)},
{'text': ((121, 1055, 276, 1091), 6)},
{'reference': ((101, 1124, 562, 1429), 7)},
{'text': ((610, 565, 1089, 930), 8)},
{'text': ((613, 976, 1006, 1045), 9)},
{'title': ((612, 1114, 726, 1129), 10)},
{'text': ((611, 1165, 1089, 1431), 11)},
{'title': ((1011, 1471, 1084, 1492), 12)}]
Este resultado inclui o tipo, coordenadas e ordem de leitura de cada região. Ao usar esse resultado, regras mais precisas podem ser definidas para analisar o PDF.
Finalmente, insira as imagens das regiões correspondentes em um modelo multimodal, como GPT-4O ou QWEN-VL, para obter diretamente blocos de texto que são amigáveis para soluções de RAG.
| img_path | tipo | página_no | nome do arquivo | contente | filepath |
|---|---|---|---|---|---|
| {absoluto_path} /page_1_title.png | Título | 1 | Atenção é tudo que você precisa | [Bloco de texto 1] | {file_absolute_path} |
| {absoluto_path} /page_1_text.png | Texto | 1 | Atenção é tudo que você precisa | [Bloco de texto 2] | {file_absolute_path} |
| {absoluto_path} /page_2_figure.png | Figura | 2 | Atenção é tudo que você precisa | [Bloco de texto 3] | {file_absolute_path} |
| {absoluto_path} /page_2_figure_caption.png | Legenda da figura | 2 | Atenção é tudo que você precisa | [Bloco de texto 4] | {file_absolute_path} |
| {absoluto_path} /page_3_table.png | Mesa | 3 | Atenção é tudo que você precisa | [Bloco de texto 5] | {file_absolute_path} |
| {absoluto_path} /page_3_table_caption.png | Legenda da mesa | 3 | Atenção é tudo que você precisa | [Bloco de texto 6] | {file_absolute_path} |
| {absoluto_path} /page_1_header.png | Cabeçalho | 1 | Atenção é tudo que você precisa | [Bloco de texto 7] | {file_absolute_path} |
| {absoluto_path} /page_2_footer.png | Rodapé | 2 | Atenção é tudo que você precisa | [Bloco de texto 8] | {file_absolute_path} |
| {absoluto_path} /page_3_reference.png | Referência | 3 | Atenção é tudo que você precisa | [Bloco de texto 9] | {file_absolute_path} |
| {absoluto_path} /page_1_equation.png | Equação | 1 | Atenção é tudo que você precisa | [Bloco de texto 10] | {file_absolute_path} |
Veja mais na função principal llm_parser.py.
pip install llmdocparser
Para instalar este projeto da fonte, siga estas etapas:
Clone o repositório:
Primeiro, clone o repositório da sua máquina local. Abra seu terminal e execute os seguintes comandos:
git clone https://github.com/lazyFrogLOL/llmdocparser.git
cd llmdocparserInstale dependências:
Este projeto usa poesia para gerenciamento de dependência. Verifique se você tem poesia instalada. Caso contrário, você pode seguir as instruções no guia de instalação da poesia.
Depois que a poesia for instalada, execute o seguinte comando no diretório raiz do projeto para instalar as dependências:
poetry install Isso lerá o arquivo pyproject.toml e instalará todas as dependências necessárias para o projeto.
from llmdocparser . llm_parser import get_image_content
content , cost = get_image_content (
llm_type = "azure" ,
pdf_path = "path/to/your/pdf" ,
output_dir = "path/to/output/directory" ,
max_concurrency = 5 ,
azure_deployment = "azure-gpt-4o" ,
azure_endpoint = "your_azure_endpoint" ,
api_key = "your_api_key" ,
api_version = "your_api_version"
)
print ( content )
print ( cost )Parâmetros
llm_type: str
As opções são Azure, Openai, DashScope.
pdf_path: str
Caminho para o arquivo PDF.
output_dir: str
Diretório de saída para armazenar todas as imagens analisadas.
max_concurrency: int
Número de threads de trabalho de análise GPT. Detalhes de chamada em lote: suporte em lote
Se estiver usando o Azure, os parâmetros do Azure_Deployment e Azure_endPoint precisam ser passados; Caso contrário, apenas a chave da API precisa ser fornecida.
base_url: str
URL do servidor compatível com OpenAI. Detalhe: servidor compatível com o OpenAI
Usando o artigo 'Atenção é tudo o que você precisa' para análise, o modelo escolhido é GPT-4O, custando o seguinte:
Total Tokens: 44063
Prompt Tokens: 33812
Completion Tokens: 10251
Total Cost (USD): $0.322825
Custo médio por página: $ 0,0215