The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Package {PaddleOCR}


Title: R Client for the 'PaddleOCR' Cloud API
Version: 0.2.1
Description: An R client for the 'PaddleOCR' cloud service API https://www.paddleocr.ai/latest/en/version3.x/inference_deployment/serving/paddleocr_official_api/overview.html. Submit images, PDFs, or URLs for OCR processing using models like 'PaddleOCR-VL-1.6'. Supports job submission, polling, result retrieval, automatic image download, and streaming PDF-to-markdown conversion with batch processing.
License: MIT + file LICENSE
URL: https://github.com/xiaoluolorn/PaddleOCR
BugReports: https://github.com/xiaoluolorn/PaddleOCR/issues
Depends: R (≥ 4.0.0)
Imports: httr (≥ 1.4.0), jsonlite (≥ 1.7.0), tools, utils
Suggests: pdftools (≥ 3.0.0), testthat (≥ 3.0.0), withr
Config/testthat/edition: 3
Encoding: UTF-8
Config/roxygen2/version: 8.0.0
NeedsCompilation: no
Packaged: 2026-08-19 09:01:58 UTC; Lenovo
Author: Chaoyang Luo [aut, cre]
Maintainer: Chaoyang Luo <xiaoluolorn@gmail.com>
Repository: CRAN
Date/Publication: 2026-08-30 09:50:02 UTC

PaddleOCR: R Client for PaddleOCR Cloud API

Description

An R client for the PaddleOCR cloud service API. Submit images, PDFs, or URLs for OCR processing using models like PaddleOCR-VL-1.6. Supports job submission, polling, result retrieval, automatic image download, and streaming PDF-to-markdown conversion with batch processing.

Author(s)

Maintainer: Chaoyang Luo xiaoluolorn@gmail.com

Authors:

See Also

Useful links:


Batch convert PDFs to Markdown via PaddleOCR

Description

Processes all PDF files in a directory, converting each to Markdown using pdf_to_markdown_with_paddle. Requires the pdftools package.

Usage

batch_pdf_to_markdown_with_paddle(
  pdf_dir = ".",
  output_root = file.path(pdf_dir, "paddle_output"),
  dpi = 300,
  batch_trigger = 3,
  workers = 1,
  resume = TRUE,
  token = "",
  job_url = "",
  model = "",
  poll_interval = 5,
  max_wait_seconds = 1800,
  timeout = 600
)

Arguments

pdf_dir

Directory containing PDF files (default: current directory).

output_root

Root directory for output (default: "<pdf_dir>/paddle_output").

dpi

Image resolution for rendering (default: 300).

batch_trigger

Number of pages to render before starting OCR (default: 3).

workers

Maximum number of OCR jobs submitted concurrently.

resume

Logical; reuse completed work from interrupted runs.

token

PaddleOCR API token.

job_url

PaddleOCR API endpoint.

model

Model name.

poll_interval

Polling interval in seconds.

max_wait_seconds

Maximum wait time per job.

timeout

HTTP timeout.

Value

A named list of results (one per PDF). Failed conversions return a list with an error element.

Examples

## Not run: 
results <- batch_pdf_to_markdown_with_paddle(
  pdf_dir = "papers",
  output_root = "papers/paddle_output"
)

## End(Not run)

OCR a single image file via PaddleOCR

Description

Submits an image for OCR, polls for completion, and saves Markdown output.

Usage

image_to_markdown(
  image_path,
  output_dir,
  page_index,
  token = "",
  job_url = "",
  model = "",
  use_doc_orientation_classify = FALSE,
  use_doc_unwarping = FALSE,
  use_chart_recognition = FALSE,
  poll_interval = 5,
  max_wait_seconds = 1800,
  timeout = 600
)

Arguments

image_path

Path to the image file.

output_dir

Directory for OCR output.

page_index

Page index for naming output files (1-indexed).

token

PaddleOCR API token.

job_url

PaddleOCR API endpoint.

model

Model name.

use_doc_orientation_classify

Logical; enable orientation classification.

use_doc_unwarping

Logical; enable document unwarping.

use_chart_recognition

Logical; enable chart recognition.

poll_interval

Polling interval in seconds.

max_wait_seconds

Maximum wait time.

timeout

HTTP timeout.

Value

A list with markdown_paths, markdown_texts, and job_id.

Examples

## Not run: 
result <- image_to_markdown("page_1.png", output_dir = "output", page_index = 1)

## End(Not run)

Perform OCR on an image, PDF, or URL using PaddleOCR

Description

This is the main entry point for the PaddleOCR cloud API. Submit a local file (image or document) or a URL, and the function will handle job submission, polling, result retrieval, and file saving automatically.

Usage

paddle_ocr(
  file_path,
  output_dir = "output",
  token = "",
  job_url = "",
  model = "",
  use_doc_orientation_classify = FALSE,
  use_doc_unwarping = FALSE,
  use_chart_recognition = FALSE,
  poll_interval = 5,
  max_wait_seconds = 3600,
  timeout = 600
)

Arguments

file_path

A local file path or a URL (http:// or https://).

output_dir

Directory to save output Markdown and images (default: "output").

token

PaddleOCR API bearer token. If empty, reads from the PADDLE_OCR_TOKEN environment variable.

job_url

PaddleOCR API endpoint. Defaults to the official cloud URL.

model

Model name to use. Defaults to "PaddleOCR-VL-1.6".

use_doc_orientation_classify

Logical; enable document orientation classification.

use_doc_unwarping

Logical; enable document unwarping.

use_chart_recognition

Logical; enable chart/table recognition.

poll_interval

Seconds between status checks (default: 5).

max_wait_seconds

Maximum wait time for job completion (default: 3600).

timeout

HTTP request timeout in seconds (default: 600).

Value

A list with elements:

file_path

Input file path or URL.

job_id

The submitted job ID.

output_dir

Output directory path.

markdown_files

Paths to saved Markdown files.

page_count

Number of pages processed.

Examples

## Not run: 
# OCR a local image
result <- paddle_ocr("document.png")

# OCR a URL
result <- paddle_ocr("https://example.com/document.jpg")

# With custom options
result <- paddle_ocr(
  file_path = "table.png",
  use_chart_recognition = TRUE,
  output_dir = "my_output"
)

## End(Not run)

Convert a single PDF page to an image

Description

Renders one page of a PDF to a PNG file. Uses a temporary directory internally to avoid pdftools filename template issues.

Usage

pdf_page_to_image(pdf_path, page_index, image_dir, dpi = 300, overwrite = TRUE)

Arguments

pdf_path

Path to the PDF file.

page_index

Page number to render (1-indexed).

image_dir

Directory to save the PNG image.

dpi

Resolution in dots per inch (default: 300).

overwrite

Logical; overwrite an existing rendered page. Set to FALSE to reuse it (default: TRUE).

Value

Path to the saved PNG image.

Examples

## Not run: 
img <- pdf_page_to_image("document.pdf", page_index = 1, image_dir = "pages")

## End(Not run)

Convert all pages of a PDF to images

Description

Renders every page of a PDF file to PNG images at the specified DPI. Requires the pdftools package.

Usage

pdf_to_images(pdf_path, image_dir, dpi = 300)

Arguments

pdf_path

Path to the PDF file.

image_dir

Directory to save PNG images into.

dpi

Resolution in dots per inch (default: 300).

Value

A character vector of image file paths.

Examples

## Not run: 
images <- pdf_to_images("document.pdf", "images", dpi = 300)

## End(Not run)

Convert a PDF to Markdown via PaddleOCR

Description

Renders PDF pages to images one by one, then submits them for OCR using the PaddleOCR cloud API. Pages are processed in streaming batches: once batch_trigger pages are rendered, OCR begins while rendering continues.

Usage

pdf_to_markdown_with_paddle(
  pdf_path,
  output_dir = NULL,
  combined_markdown = TRUE,
  dpi = 300,
  batch_trigger = 3,
  workers = 1,
  resume = TRUE,
  token = "",
  job_url = "",
  model = "",
  use_doc_orientation_classify = FALSE,
  use_doc_unwarping = FALSE,
  use_chart_recognition = FALSE,
  poll_interval = 5,
  max_wait_seconds = 1800,
  timeout = 600,
  ...
)

Arguments

pdf_path

Path to the PDF file.

output_dir

Output directory. If NULL, defaults to "<pdf_name>_paddle_output" next to the PDF.

combined_markdown

Logical; if TRUE (default), combine all page Markdown into a single file.

dpi

Image resolution for rendering (default: 300).

batch_trigger

Number of pages to render before starting OCR (default: 3).

workers

Maximum number of OCR jobs submitted concurrently (default: 1). OCR runs concurrently on the PaddleOCR service; result polling remains local and sequential.

resume

Logical; reuse rendered page images, completed Markdown files, and submitted job IDs from an interrupted run (default: TRUE).

token

PaddleOCR API token.

job_url

PaddleOCR API endpoint.

model

Model name.

use_doc_orientation_classify

Logical; enable orientation classification.

use_doc_unwarping

Logical; enable document unwarping.

use_chart_recognition

Logical; enable chart recognition.

poll_interval

Polling interval in seconds.

max_wait_seconds

Maximum wait time per job.

timeout

HTTP timeout.

...

Ignored (for future compatibility).

Details

Requires the pdftools package.

Value

A list with PDF path, image paths, Markdown file paths, combined Markdown path and text, and output directory.

Examples

## Not run: 
result <- pdf_to_markdown_with_paddle("document.pdf")
cat(result$combined_markdown_text)

## End(Not run)

Poll a PaddleOCR job until completion

Description

Repeatedly queries the job status endpoint until the job reaches "done" or "failed" state, or the maximum wait time is exceeded.

Usage

poll_paddle_job(
  job_id,
  token = "",
  job_url = "",
  poll_interval = 5,
  max_wait_seconds = 3600
)

Arguments

job_id

The job ID returned by submit_paddle_job.

token

PaddleOCR API bearer token. If empty, reads from the PADDLE_OCR_TOKEN environment variable.

job_url

PaddleOCR API endpoint. Defaults to the official cloud URL.

poll_interval

Seconds between status checks (default: 5).

max_wait_seconds

Maximum total wait time in seconds (default: 3600).

Value

A character string containing the JSONL result URL.

Examples

## Not run: 
job_id <- submit_paddle_job("document.png", token = "your_token")
jsonl_url <- poll_paddle_job(job_id, token = "your_token")

## End(Not run)

Download and parse a PaddleOCR JSONL result

Description

Fetches the JSONL result from the URL, parses each line, and saves layout-parsed Markdown documents and their associated images.

Usage

process_paddle_jsonl_result(jsonl_url, output_dir, starting_doc_index = 0L)

Arguments

jsonl_url

URL to the JSONL result file.

output_dir

Directory to save output files.

starting_doc_index

Integer offset for naming output files (default: 0).

Value

A list with elements markdown_files (file paths), markdown_texts (text content), and doc_count (number of documents saved).

Examples

## Not run: 
result <- process_paddle_jsonl_result(
  jsonl_url = "https://example.com/result.jsonl",
  output_dir = "output"
)

## End(Not run)

Submit an OCR job to the PaddleOCR cloud API

Description

Submits a local file or a URL for OCR processing. The function detects whether the input is a URL or a local file path and uses the appropriate API call method (JSON body vs. multipart upload).

Usage

submit_paddle_job(
  file_path,
  token = "",
  job_url = "",
  model = "",
  use_doc_orientation_classify = FALSE,
  use_doc_unwarping = FALSE,
  use_chart_recognition = FALSE,
  timeout = 600
)

Arguments

file_path

A local file path or a URL (http:// or https://).

token

PaddleOCR API bearer token. If empty, reads from the PADDLE_OCR_TOKEN environment variable.

job_url

PaddleOCR API endpoint. Defaults to the official cloud URL.

model

Model name to use. Defaults to "PaddleOCR-VL-1.6".

use_doc_orientation_classify

Logical; enable document orientation classification.

use_doc_unwarping

Logical; enable document unwarping.

use_chart_recognition

Logical; enable chart/table recognition.

timeout

HTTP request timeout in seconds (default: 600).

Value

A character string containing the job ID.

Examples

## Not run: 
# Submit a local image
job_id <- submit_paddle_job(
  file_path = "document.png",
  token = "your_token_here"
)

# Submit a URL
job_id <- submit_paddle_job(
  file_path = "https://example.com/document.jpg",
  token = "your_token_here"
)

## End(Not run)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.