diff --git a/pageindex/backend/cloud.py b/pageindex/backend/cloud.py index 417ec6b..f97e77a 100644 --- a/pageindex/backend/cloud.py +++ b/pageindex/backend/cloud.py @@ -214,7 +214,9 @@ class CloudBackend: with open(file_path, "rb") as f: resp = self._request("POST", "/doc/", files={"file": f}, data=data) - doc_id = resp["doc_id"] + doc_id = resp.get("doc_id") + if not doc_id: + raise CloudAPIError("Cloud API upload response missing 'doc_id'") # Poll until indexing completes. The cloud API signals readiness via # status == "completed"; retrieval_ready is not a reliable indicator. diff --git a/pageindex/backend/local.py b/pageindex/backend/local.py index 1cbd47a..de89c1b 100644 --- a/pageindex/backend/local.py +++ b/pageindex/backend/local.py @@ -230,7 +230,7 @@ class LocalBackend: # stripped (if_add_node_text=False, the default). Reachable only for a # custom StorageEngine that doesn't cache pages (the built-in # SQLiteStorage always does). - if doc["doc_type"] == "pdf": + if doc["doc_type"].lower() == "pdf": return get_pdf_page_content(doc["file_path"], page_nums) else: parser = self._resolve_parser(doc["file_path"]) diff --git a/pageindex/index/utils.py b/pageindex/index/utils.py index 7efd0dd..edf7ba5 100644 --- a/pageindex/index/utils.py +++ b/pageindex/index/utils.py @@ -748,6 +748,8 @@ def get_pdf_name(pdf_path): meta = pdf_reader.metadata pdf_name = meta.title if meta and meta.title else 'Untitled' pdf_name = sanitize_filename(pdf_name) + else: + pdf_name = os.path.basename(str(pdf_path)) return pdf_name @@ -820,6 +822,8 @@ def get_page_tokens(pdf_path, model=None, pdf_parser="PyPDF2"): doc = pymupdf.open(stream=pdf_stream, filetype="pdf") elif isinstance(pdf_path, str) and os.path.isfile(pdf_path) and pdf_path.lower().endswith(".pdf"): doc = pymupdf.open(pdf_path) + else: + raise ValueError(f"Invalid pdf_path for PyMuPDF: {pdf_path!r}") page_list = [] for page in doc: page_text = page.get_text()