{"id":24223,"library":"pdfquery","title":"PDFQuery","description":"PDFQuery is a lightweight Python library for scraping data from PDFs using JQuery-like CSS selectors or XPath expressions. It wraps pdfminer and lxml to provide a concise API for extracting text, tables, and layouts. Version 0.4.3 is the latest, with no active development since 2016.","status":"maintenance","version":"0.4.3","language":"python","source_language":"en","source_url":"https://github.com/jcushman/pdfquery","tags":["pdf","scraping","css-selectors","xpath","pdfminer"],"install":[{"cmd":"pip install pdfquery","lang":"bash","label":"Default install"}],"dependencies":[{"reason":"Backend for PDF parsing; pdfquery requires pdfminer.six (not pdfminer).","package":"pdfminer.six","optional":false},{"reason":"XML/HTML parsing for PDF internal structure.","package":"lxml","optional":false},{"reason":"Provides JQuery-like selectors.","package":"pyquery","optional":false}],"imports":[{"note":"","wrong":null,"symbol":"PDFQuery","correct":"from pdfquery import PDFQuery"}],"quickstart":{"code":"from pdfquery import PDFQuery\n\npdf = PDFQuery('sample.pdf')\npdf.load()\n\n# Extract text using CSS selector\ntext = pdf.pq('LTTextLineHorizontal').text()\nprint(text)\n\n# Extract with XPath\ntext2 = pdf.pq('LTTextLineHorizontal:contains(\"Invoice\")').text()\nprint(text2)","lang":"python","description":"Load a PDF and extract text lines using JQuery-like selectors via pyquery."},"warnings":[{"fix":"Uninstall old pdfminer: pip uninstall pdfminer; ensure pdfminer.six is installed.","message":"PDFQuery depends on pdfminer.six, not the older pdfminer. If both are installed, import conflicts may occur.","severity":"gotcha","affected_versions":"all"},{"fix":"Test with your Python version; if issues arise, switch to pdfplumber or pypdf.","message":"pdfquery is unmaintained since 2016. Compatibility with newer Python versions (3.10+) is not guaranteed. Consider alternatives like pypdf or pdfplumber.","severity":"deprecated","affected_versions":">=0.4.3"},{"fix":"Use exact case: LTTextLineHorizontal, LTTextBox, etc.","message":"The library uses pyquery which is case-sensitive for tags. Common mistake: 'LTTextLineHorizontal' not 'lttextlinehorizontal'.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install pdfminer.six: pip install pdfminer.six","cause":"pdfquery requires pdfminer.six, but the import looks for 'pdfminer'.","error":"ModuleNotFoundError: No module named 'pdfminer'"},{"fix":"Call pdf.load() before using pdf.pq().","cause":"pq (pyquery) is only available after calling .load() on the PDF object.","error":"AttributeError: 'PDFQuery' object has no attribute 'pq'"},{"fix":"pip install pdfquery && verify version: pip show pdfquery","cause":"Possibly installed wrong package or older version.","error":"ImportError: cannot import name 'PDFQuery'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}