Skip to content

Commit

Permalink
Revert "Revert "Merge pull request #71 from cpacker/pdf-support""
Browse files Browse the repository at this point in the history
This reverts commit 0d4faa1.
  • Loading branch information
vivi committed Oct 21, 2023
1 parent 0d4faa1 commit f8a619f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
13 changes: 12 additions & 1 deletion memgpt/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import tiktoken
import glob
import sqlite3
import fitz
from tqdm import tqdm
from memgpt.openai_tools import async_get_embedding_with_backoff

Expand Down Expand Up @@ -98,6 +99,12 @@ def read_in_chunks(file_object, chunk_size):
break
yield data

def read_pdf_in_chunks(file, chunk_size):
doc = fitz.open(file)
for page in doc:
text = page.get_text()
yield text

def read_in_rows_csv(file_object, chunk_size):
csvreader = csv.reader(file_object)
header = next(csvreader)
Expand All @@ -123,7 +130,11 @@ def total_bytes(pattern):
def chunk_file(file, tkns_per_chunk=300, model='gpt-4'):
encoding = tiktoken.encoding_for_model(model)
with open(file, 'r') as f:
if file.endswith('.csv'):
if file.endswith('.pdf'):
lines = [l for l in read_pdf_in_chunks(file, tkns_per_chunk*8)]
if len(lines) == 0:
print(f"Warning: {file} did not have any extractable text.")
elif file.endswith('.csv'):
lines = [l for l in read_in_rows_csv(f, tkns_per_chunk*8)]
else:
lines = [l for l in read_in_chunks(f, tkns_per_chunk*4)]
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ geopy
numpy
openai
pybars3
pymupdf
python-dotenv
pytz
rich
Expand Down

0 comments on commit f8a619f

Please sign in to comment.