POST /v1/pdf/classifier

Document Classifier can automatically find class of input PDF, JPG, PNG document by analyzing its content using the built-in AI or custom defined classification rules.

The best way to develop, test and maintain classification rules is to use Classifier Tester Tool from PDF.co Document Classifier UI . Use this tool to quickly edit and test rules on single PDFs and on folders.

Attributes

Attributes are case-sensitive and should be inside JSON for POST request. for example: { "url": "https://example.com/file1.pdf" }
AttributeTypeRequiredDefaultDescription
urlstringYes-URL to the source file url attribute
callbackstringNo-The callback URL (or Webhook) used to receive the POST data. see Webhooks & Callbacks. This is only applicable when async is set to true.
httpusernamestringNo-HTTP auth user name if required to access source URL.
httppasswordstringNo-HTTP auth password if required to access source URL.
inlinebooleanNofalseSet to true to return results inside the response. Otherwise, the endpoint will return a URL to the output file generated.
passwordstringNo-Password for the PDF file.
asyncbooleanNofalseSet async to true for long processes to run in the background, API will then return a jobId which you can use with the Background Job Check endpoint. Also see Webhooks & Callbacks
namestringNo-File name for the generated output, the input must be in string format.
expirationintegerNo60Set the expiration time for the output link in minutes. After this specified duration, any generated output file(s) will be automatically deleted from PDF.co Temporary Files Storage. The maximum duration for link expiration varies based on your current subscription plan. To store permanent input files (e.g. re-usable images, pdf templates, documents) consider using PDF.co Built-In Files Storage.
caseSensitivebooleanNotrueSet to false to don’t use case-sensitive search.
rulescsvstringNo-Define custom classification rules in CSV format. See the rulescsv.
rulescsvurlstringNo-URL to the CSV file with classification rules. For the format, see the description above rulescsv parameter
profilesobjectNo-See Profiles for more information.
    RenderTextObjectsbooleanNotrueRender text objects or not
    RenderVectorObjectsbooleanNotrueRender vector objects or not
    RenderImageObjectsbooleanNotrueRender image objects or not
    TIFFCompressionstringNoLZWTIFF compression algorithm. The options are: None, LZW, CCITT3, CCITT4, RLE
    OCRModestringNoAutoSpecifies how OCR (Optical Character Recognition) should process input content, offering various modes to tailor text extraction based on content type such as images, fonts, and vector graphics. For more information, see OCR Extraction Modes.
    OCRResolutionintegerNo300Use this parameter to change the OCR resolution from the default 300 dpi. The range is from 72 to 1200 dpi.
    RotationAngleintegerNo-Use manual rotation to handle PDFs with vertically drawn text. Normally, OCR automatically detects page rotation in PDFs and extracts text accurately. However, in some cases, the PDF might not have an actual rotated page --- Rather, the text itself is drawn vertically. In such scenarios, auto-detection may fail. You can use this parameter to manually set the page rotation. The available angles are: 0, 1, 2, 3.
    LineGroupingModestringNoNoneControls line grouping in PDF text extraction. Modes: None (no grouping), GroupByRows (merge rows if all cells align), GroupByColumns (merge cells by column), JoinOrphanedRows (merge single-cell rows to above if no separator).
    ConsiderFontColorsbooleanNofalseControls whether font colors should be considered when detecting table structure and merging text objects during PDF extraction. Set to true to consider font colors.
    DetectNewColumnBySpacesRatiostringNo1.2Controls how spaces between words are interpreted for column detection in PDF text extraction. It defines the ratio of space width that determines when text should be treated as being in separate columns.
    AutoAlignColumnsToHeaderbooleanNotrueControls how columns are detected and aligned during table extraction from PDF documents. It affects both table structure detection and text extraction with formatting preservation. Set to true to automatically align columns to the header row. When set to true (default), the row with the most columns is used as the header, and all other rows are aligned to this structure --- ideal for well-structured tables. When set to false, columns are analyzed independently across all rows to build the structure, which works better for inconsistent or irregular tables.
    OCRImagePreprocessingFilters.AddGammaCorrection()array[string (float format)]No["1.4"]Adds a gamma correction filter to the image preprocessing pipeline used during OCR (Optical Character Recognition). This filter adjusts the brightness and contrast of an image by applying a non-linear gamma correction to improve text recognition quality.
    OCRImagePreprocessingFilters.AddGrayscale()booleanNofalseSet to true to preprocessing filter that converts a colored document/image to grayscale before performing OCR
    DataEncryptionAlgorithmstringNo-Controls the encryption algorithm used for data encryption. See User-Controlled Encryption for more information. The available algorithms are: AES128, AES192, AES256.
    DataEncryptionKeystringNo-Controls the encryption key used for data encryption. See User-Controlled Encryption for more information.
    DataEncryptionIVstringNo-Controls the encryption IV used for data encryption. See User-Controlled Encryption for more information.
    DataDecryptionAlgorithmstringNo-Controls the decryption algorithm used for data decryption. See User-Controlled Encryption for more information. The available algorithms are: AES128, AES192, AES256.
    DataDecryptionKeystringNo-Controls the decryption key used for data decryption. See User-Controlled Encryption for more information.
    DataDecryptionIVstringNo-Controls the decryption IV used for data decryption. See User-Controlled Encryption for more information.

rulescsv

Rules are in CSV format where each row contains: class name, logic (AND or OR (default)), and keywords separated by a comma. Each row is separated by the \n symbol. You can use regular expressions for keywords with this syntax: /keyword or regexp/i where i is the case-insensitive flag. Please note that all \ symbols should add the prefix \ because of JSON format, so \d becomes \\d and so on.

Custom Rules Example 1 for rulescsv (for more examples please check the Document Classifier Usage Guide)

Amazon AWS, OR, Amazon Web Services Invoice, Amazon CloudFront\nDigital Ocean, OR,DigitalOcean, DOInvoice\nACME,OR, ACME Inc.,1540 Long Street

Custom Rules Example 2 (with regular expressions, for more examples please check the Document Classifier Usage Guide)

Medical Report,AND,/Instructing Party|Medical Report|Date Of Injury|Med Agency Ref/i\r\nInjured Claimant,OR, Injured Claimant, Injured Patient ID

Document Classifier Usage Guide

This Document Classifier checks content of input PDF, JPG, PNG, or TIFF. It uses AI to automatically determine the class of the document (e.g., finance, invoice) and returns the result to the user. Custom-defined classification rules can also be used.

Use this Document Classifier to quickly build a workflow for sorting input documents and PDF files.

How to Create and Test Custom Classification Rules

Classification rules are stored in CSV format, one line per class, with the following format:

className, logicType, keyword1, keyword2, keyword3 ...

Where:

  • className – The name of the class. It will be returned if rules from this class match the document.
  • logicType – (Optional) Logic to use for keywords. Can be OR (default) or AND. OR means the class is identified if one or more keywords match. AND means all keywords must match. If not specified, OR is assumed.
  • keyword1, keyword2, keyword3 – Keywords or phrases to check. Can include regular expressions, e.g., /\d+/ or /Medical Report|Med Report/i.

Sample Rules

Invoice,OR,Invoice Number,Invoice #,Invoice No,Tax Invoice,,
Purchase Order,OR,PO Number,Order Number,Order No,,,
Bill,OR,Bill Date,Billing Period,Bill Number,,,
Bank Statement,OR,/Account Statement/i,/Statement of Account/i,Business Checking,Accounts Payable,/Statement No/i,
Income Statement,OR,/Income Statement/i,,,,,
Has US Number,OR,"/\b-?(\d+,?)+(\.\d\d)\b/",,,,,
Medical Report,AND,/Medical Report|Med Report/i

Query parameters

No query parameters accepted.

Responses

ParameterTypeDescription
bodyobjectResponse body.
pageCountintegerNumber of pages in the PDF document.
errorbooleanIndicates whether an error occurred (false means success)
statusstringStatus code of the request (200, 404, 500, etc.). For more information, see Response Codes.. For more information, see Response Codes.
creditsintegerNumber of credits consumed by the request
remainingCreditsintegerNumber of credits remaining in the account
durationintegerTime taken for the operation in milliseconds

Example Payload

To see the request size limits, please refer to the Request Size Limits.
{
  "url": "https://pdfco-test-files.s3.us-west-2.amazonaws.com/document-parser/sample-invoice.pdf",
  "async": false,
  "inline": "true",
  "password": "",
  "profiles": ""
}

Example Response

To see the main response codes, please refer to the Response Codes page.
{
  "body": {
    "classes": [
      {
        "class": "invoice"
      },
      {
        "class": "finance"
      },
      {
        "class": "documents"
      }
    ]
  },
  "pageCount": 1,
  "error": false,
  "status": 200,
  "credits": 42,
  "duration": 353,
  "remainingCredits": 98019328
}

Code Samples

curl --location --request POST 'https://api.pdf.co/v1/pdf/classifier' \
--header 'Content-Type: application/json' \
--header 'x-api-key: *******************' \
--data-raw '{
"url": "https://pdfco-test-files.s3.us-west-2.amazonaws.com/document-parser/sample-invoice.pdf",
"async": false,
"inline": "true",
"password": "",
"profiles": ""
} '