Skip to content

Commit 6925d10

Browse files
authored
add OCR button in UI (#566)
1 parent 62e9fca commit 6925d10

File tree

18 files changed

+288
-118
lines changed

18 files changed

+288
-118
lines changed

docker/standard/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ RUN apk update && apk add linux-headers python3-dev \
3131

3232
RUN pip install --upgrade poetry roco==0.4.2
3333
RUN curl -L -o /bin/env2js https://github.com/papermerge/env2js/releases/download/0.2/env2js.amd64
34+
RUN chmod +x /bin/env2js
3435

3536
COPY poetry.lock pyproject.toml README.md LICENSE ${CORE_APP}/
3637

docker/standard/entrypoint.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,17 @@ case $CMD in
5757
exec_init
5858
# TODO: replace roco with env2js
5959
roco > /usr/share/nginx/html/auth_server/papermerge-runtime-config.js
60+
# Once user options endpoint is implemented, following two lines will removed
6061
/bin/env2js -f /core_app/core.js.tmpl > /usr/share/nginx/html/ui/papermerge-runtime-config.js
62+
sed -i '/Papermerge/a <script type="module" src="/papermerge-runtime-config.js"></script>' /usr/share/nginx/html/ui/index.html
6163
exec /usr/bin/supervisord -c /etc/papermerge/supervisord.conf
6264
;;
6365
server_without_init)
6466
# TODO: replace roco with env2js
6567
roco > /usr/share/nginx/html/auth_server/papermerge-runtime-config.js
68+
# Once user options endpoint is implemented, following two lines will removed
6669
/bin/env2js -f /core_app/core.js.tmpl > /usr/share/nginx/html/ui/papermerge-runtime-config.js
70+
sed -i '/Papermerge/a <script type="module" src="/papermerge-runtime-config.js"></script>' /usr/share/nginx/html/ui/index.html
6771
exec /usr/bin/supervisord -c /etc/papermerge/supervisord.conf
6872
;;
6973
create_token.sh)

papermerge/app.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
)
2121
from papermerge.core.features.liveness_probe.router import router as probe_router
2222
from papermerge.search.routers.search import router as search_router
23+
from papermerge.core.features.tasks.router import router as tasks_router
2324

2425
from papermerge.core.version import __version__
2526
from papermerge.core.config import get_settings
@@ -49,6 +50,7 @@
4950
app.include_router(tags_router, prefix=prefix)
5051
app.include_router(groups_router, prefix=prefix)
5152
app.include_router(probe_router, prefix=prefix)
53+
app.include_router(tasks_router, prefix=prefix)
5254

5355
if config.papermerge__search__url:
5456
app.include_router(search_router, prefix=prefix)

papermerge/core/features/nodes/router.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def create_node(
9595
# if user does not specify document's language, get that
9696
# value from user preferences
9797
if pynode.lang is None:
98-
pynode.lang = settings.papermerge__ocr__default_language
98+
pynode.lang = settings.papermerge__ocr__default_lang_code
9999

100100
attrs = dict(
101101
title=pynode.title,
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from typing import Annotated
2+
3+
from fastapi import APIRouter, Security
4+
5+
from papermerge.core import constants, schema, utils
6+
from papermerge.core.features.auth import get_current_user, scopes
7+
from papermerge.core import tasks
8+
9+
from .schema import OCRTaskIn
10+
11+
router = APIRouter(
12+
prefix="/tasks",
13+
tags=["tasks"],
14+
)
15+
16+
17+
@router.post("/ocr")
18+
@utils.docstring_parameter(scope=scopes.TASK_OCR)
19+
def start_ocr(
20+
ocr_task: OCRTaskIn,
21+
user: Annotated[schema.User, Security(get_current_user, scopes=[scopes.TASK_OCR])],
22+
):
23+
"""Triggers OCR for specific document
24+
25+
Required scope: `{scope}`
26+
"""
27+
28+
tasks.send_task(
29+
constants.WORKER_OCR_DOCUMENT,
30+
kwargs={
31+
"document_id": str(ocr_task.document_id),
32+
"lang": ocr_task.lang,
33+
},
34+
route_name="ocr",
35+
)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from typing import Literal
2+
from uuid import UUID
3+
4+
from pydantic import BaseModel
5+
6+
LangCode = Literal[
7+
"ces",
8+
"dan",
9+
"deu",
10+
"ell",
11+
"eng",
12+
"fas",
13+
"fin",
14+
"fra",
15+
"guj",
16+
"heb",
17+
"hin",
18+
"ita",
19+
"jpn",
20+
"kor",
21+
"lit",
22+
"nld",
23+
"nor",
24+
"pol",
25+
"por",
26+
"ron",
27+
"san",
28+
"spa",
29+
]
30+
31+
32+
class OCRTaskIn(BaseModel):
33+
document_id: UUID # document model ID
34+
lang: LangCode

papermerge/core/routers/tasks.py

Lines changed: 0 additions & 42 deletions
This file was deleted.

papermerge/core/schemas/tasks.py

Lines changed: 0 additions & 38 deletions
This file was deleted.

ui2/index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
<body>
1010
<div id="root"></div>
1111
<div id="modals"></div>
12-
<script type="module" src="/papermerge-runtime-config.js"></script>
1312
<script type="module" src="/src/main.tsx"></script>
1413
</body>
1514
</html>

ui2/papermerge-runtime-config.js

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)