Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
13917c051c | ||
|
|
8182fe9c92 | ||
|
|
1950acfbda |
@@ -152,6 +152,16 @@ hooks. As such, you cannot "chain" a series of plugin filters together in this
|
|||||||
way. Instead, a single hook implementation should be responsible for any such
|
way. Instead, a single hook implementation should be responsible for any such
|
||||||
chaining operations.
|
chaining operations.
|
||||||
|
|
||||||
|
Examples
|
||||||
|
========
|
||||||
|
|
||||||
|
* OCRmyPDF's test suite contains several plugins that are used to simulate certain
|
||||||
|
test conditions.
|
||||||
|
* `ocrmypdf-papermerge <https://github.com/papermerge/OCRmyPDF_papermerge>`_ is
|
||||||
|
a production plugin that integrates OCRmyPDF and the Papermerge document
|
||||||
|
management system.
|
||||||
|
|
||||||
|
|
||||||
Custom command line arguments
|
Custom command line arguments
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,13 @@ may be unreliable. Use the API to depend on precise behavior.
|
|||||||
The public API may be useful in scripts that launch OCRmyPDF processes or that
|
The public API may be useful in scripts that launch OCRmyPDF processes or that
|
||||||
wish to use some of its features for working with PDFs..
|
wish to use some of its features for working with PDFs..
|
||||||
|
|
||||||
|
v13.4.1
|
||||||
|
=======
|
||||||
|
|
||||||
|
- Temporarily make threads rather than processes the default executor worker, due
|
||||||
|
to a persistent deadlock issue when processes are used. Add a new command line
|
||||||
|
argument ``--no-use-threads`` to disable this.
|
||||||
|
|
||||||
v13.4.0
|
v13.4.0
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|||||||
+7
-1
@@ -228,7 +228,13 @@ Online documentation is located at:
|
|||||||
help=argparse.SUPPRESS,
|
help=argparse.SUPPRESS,
|
||||||
)
|
)
|
||||||
jobcontrol.add_argument(
|
jobcontrol.add_argument(
|
||||||
'--use-threads', action='store_true', help=argparse.SUPPRESS
|
'--use-threads', action='store_true', default=True, help=argparse.SUPPRESS
|
||||||
|
)
|
||||||
|
jobcontrol.add_argument(
|
||||||
|
'--no-use-threads',
|
||||||
|
action='store_false',
|
||||||
|
dest='use_threads',
|
||||||
|
help=argparse.SUPPRESS,
|
||||||
)
|
)
|
||||||
|
|
||||||
metadata = parser.add_argument_group(
|
metadata = parser.add_argument_group(
|
||||||
|
|||||||
@@ -132,6 +132,7 @@ def get_progressbar_class():
|
|||||||
Here is how OCRmyPDF will use the progress bar:
|
Here is how OCRmyPDF will use the progress bar:
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
pbar_class = pm.hook.get_progressbar_class()
|
pbar_class = pm.hook.get_progressbar_class()
|
||||||
with pbar_class(**tqdm_kwargs) as pbar:
|
with pbar_class(**tqdm_kwargs) as pbar:
|
||||||
...
|
...
|
||||||
@@ -235,9 +236,9 @@ def filter_page_image(page: 'PageContext', image_filename: Path) -> Path:
|
|||||||
``image_filename``. The hook may overwrite ``image_filename`` with a new file.
|
``image_filename``. The hook may overwrite ``image_filename`` with a new file.
|
||||||
|
|
||||||
The output image should preserve the same physical unit dimensions, that is
|
The output image should preserve the same physical unit dimensions, that is
|
||||||
(width * dpi_x, height * dpi_y). That is, if the image is resized, the DPI
|
``(width * dpi_x, height * dpi_y)``. That is, if the image is resized, the DPI
|
||||||
must be adjusted by the reciprocal. If this is not preserved, the PDF page
|
must be adjusted by the reciprocal. If this is not preserved, the PDF page
|
||||||
will be resized and the OCR layer misaligned. OCRmyPDF does not nothing
|
will be resized and the OCR layer misaligned. OCRmyPDF does nothing
|
||||||
to enforce these constraints; it is up to the plugin to do sensible things.
|
to enforce these constraints; it is up to the plugin to do sensible things.
|
||||||
|
|
||||||
OCRmyPDF will create the PDF page based on the image format used (unless the
|
OCRmyPDF will create the PDF page based on the image format used (unless the
|
||||||
@@ -399,8 +400,7 @@ def get_ocr_engine() -> OcrEngine:
|
|||||||
"""Returns an OcrEngine to use for processing this file.
|
"""Returns an OcrEngine to use for processing this file.
|
||||||
|
|
||||||
The OcrEngine may be instantiated multiple times, by both the main process
|
The OcrEngine may be instantiated multiple times, by both the main process
|
||||||
and child process. As such, it must be obtain store any state in ``options``
|
and child process.
|
||||||
or some common location.
|
|
||||||
|
|
||||||
Note:
|
Note:
|
||||||
This is a :ref:`firstresult hook<firstresult>`.
|
This is a :ref:`firstresult hook<firstresult>`.
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ from ocrmypdf import ExitCode
|
|||||||
from .conftest import run_ocrmypdf_api
|
from .conftest import run_ocrmypdf_api
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(True, reason="--use-threads is currently default")
|
||||||
@pytest.mark.skipif(os.name == 'nt', reason="Windows doesn't have SIGKILL")
|
@pytest.mark.skipif(os.name == 'nt', reason="Windows doesn't have SIGKILL")
|
||||||
def test_simulate_oom_killer(resources, no_outpdf):
|
def test_simulate_oom_killer(resources, no_outpdf):
|
||||||
exitcode = run_ocrmypdf_api(
|
exitcode = run_ocrmypdf_api(
|
||||||
|
|||||||
Reference in New Issue
Block a user