docs: def pdf_extraction(pdf, cloud=None, batch=False, api_key=None, version=None, **kwargs):
      """
      Given a pdf, returns the text and metadata associated with the given pdf.
      PDFs may be provided as base64 encoded data or as a filepath.
      Base64 image data and formatted table is optionally returned by setting
      `images=True` or `tables=True`.
  
      Example usage:
  
      .. code-block:: python
  
         >>> from indicoio import pdf_extraction
         >>> results = pdf_extraction(pdf_file)
         >>> results.keys()
         ['text', 'metadata']
  
      :param pdf: The pdf to be analyzed.
      :type pdf: str or list of strs
      :rtype: dict or list of dicts
      """
      pdf = pdf_preprocess(pdf, batch=batch)
      url_params = {"batch": batch, "api_key": api_key, "version": version}
      results = api_handler(pdf, cloud=cloud, api="pdfextraction", url_params=url_params, **kwargs)
  
      if batch:
          for result in results:
              result["images"] = postprocess_images(result.get("images", []))
      else:
          results['images'] = postprocess_images(results.get("images", []))
      return results