RAG學習--pdf讀取與切割

kin2022發表於2024-05-12

RAG流程:

線下:

1、文件載入

2、文件切分

3、向量化

4、向向量資料庫灌資料

線上:

1、獲取使用者問題

2、使用者問題向量化

3、檢索向量資料庫

4、將檢索結果和問題填充到pomp模板

5、用最終獲得的pomp呼叫LLM

6、最終由LLM生成回覆

本篇完成文件載入與切割(pdf載入與切割)

1、文件載入

載入PDF:

llama2.pdf
安裝pdf讀取包
pip install pdfminer.six
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTTextContainer

#從pdf中提取文字extract_text_from_pdf
def extract_text_from_pdf(pdf_path,page_numbers=None,min_line_length =1):
paragraphs =[]
buff =''
full_text = ''
for i , page_layout in enumerate(extract_pages(pdf_path)):
if page_numbers is not None and i not in page_numbers:
continue
for element in page_layout:
if isinstance(element,LTTextContainer):
full_text += element.get_text() +'\n'
lines = full_text.split('\n')
for line in lines:
if len(line) >= min_line_length:
buff += (' '+line) if not line.endswith('-') else line.strip('-')
elif buff:
paragraphs.append(buff)
buff = ''
if buff:
paragraphs.append(buff)

return paragraphs
#以上是pdf讀取方法extract_text_from_pdf
#呼叫程式,並顯示前四行
paragraphs = extract_text_from_pdf('llama2.pdf',min_line_length=4)

for page in paragraphs[:4]:
print(page+'\n')

在terminal執行:py .\pdfread.py顯示結果

pdf載入與切割完畢。

相關文章