Skip to content

Commit ad13a8a

Browse files
Merge pull request #57235 from nextcloud/enh/noid/testing-ocr-provider
Add fake OCR taskprocessing provider in the testing app
2 parents 72ad2ed + e1d19b2 commit ad13a8a

File tree

4 files changed

+97
-0
lines changed

4 files changed

+97
-0
lines changed

apps/testing/composer/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
'OCA\\Testing\\Provider\\FakeTranslationProvider' => $baseDir . '/../lib/Provider/FakeTranslationProvider.php',
2727
'OCA\\Testing\\Settings\\DeclarativeSettingsForm' => $baseDir . '/../lib/Settings/DeclarativeSettingsForm.php',
2828
'OCA\\Testing\\TaskProcessing\\FakeContextWriteProvider' => $baseDir . '/../lib/TaskProcessing/FakeContextWriteProvider.php',
29+
'OCA\\Testing\\TaskProcessing\\FakeOcrProvider' => $baseDir . '/../lib/TaskProcessing/FakeOcrProvider.php',
2930
'OCA\\Testing\\TaskProcessing\\FakeTextToImageProvider' => $baseDir . '/../lib/TaskProcessing/FakeTextToImageProvider.php',
3031
'OCA\\Testing\\TaskProcessing\\FakeTextToTextChatProvider' => $baseDir . '/../lib/TaskProcessing/FakeTextToTextChatProvider.php',
3132
'OCA\\Testing\\TaskProcessing\\FakeTextToTextProvider' => $baseDir . '/../lib/TaskProcessing/FakeTextToTextProvider.php',

apps/testing/composer/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class ComposerStaticInitTesting
4141
'OCA\\Testing\\Provider\\FakeTranslationProvider' => __DIR__ . '/..' . '/../lib/Provider/FakeTranslationProvider.php',
4242
'OCA\\Testing\\Settings\\DeclarativeSettingsForm' => __DIR__ . '/..' . '/../lib/Settings/DeclarativeSettingsForm.php',
4343
'OCA\\Testing\\TaskProcessing\\FakeContextWriteProvider' => __DIR__ . '/..' . '/../lib/TaskProcessing/FakeContextWriteProvider.php',
44+
'OCA\\Testing\\TaskProcessing\\FakeOcrProvider' => __DIR__ . '/..' . '/../lib/TaskProcessing/FakeOcrProvider.php',
4445
'OCA\\Testing\\TaskProcessing\\FakeTextToImageProvider' => __DIR__ . '/..' . '/../lib/TaskProcessing/FakeTextToImageProvider.php',
4546
'OCA\\Testing\\TaskProcessing\\FakeTextToTextChatProvider' => __DIR__ . '/..' . '/../lib/TaskProcessing/FakeTextToTextChatProvider.php',
4647
'OCA\\Testing\\TaskProcessing\\FakeTextToTextProvider' => __DIR__ . '/..' . '/../lib/TaskProcessing/FakeTextToTextProvider.php',

apps/testing/lib/AppInfo/Application.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use OCA\Testing\Provider\FakeTranslationProvider;
2020
use OCA\Testing\Settings\DeclarativeSettingsForm;
2121
use OCA\Testing\TaskProcessing\FakeContextWriteProvider;
22+
use OCA\Testing\TaskProcessing\FakeOcrProvider;
2223
use OCA\Testing\TaskProcessing\FakeTextToImageProvider;
2324
use OCA\Testing\TaskProcessing\FakeTextToTextChatProvider;
2425
use OCA\Testing\TaskProcessing\FakeTextToTextProvider;
@@ -54,6 +55,7 @@ public function register(IRegistrationContext $context): void {
5455
$context->registerTaskProcessingProvider(FakeTranslateProvider::class);
5556
$context->registerTaskProcessingProvider(FakeTranscribeProvider::class);
5657
$context->registerTaskProcessingProvider(FakeContextWriteProvider::class);
58+
$context->registerTaskProcessingProvider(FakeOcrProvider::class);
5759

5860
$context->registerFileConversionProvider(ConversionProvider::class);
5961

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
<?php
2+
3+
/**
4+
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
5+
* SPDX-License-Identifier: AGPL-3.0-or-later
6+
*/
7+
8+
declare(strict_types=1);
9+
10+
namespace OCA\Testing\TaskProcessing;
11+
12+
use OCA\Testing\AppInfo\Application;
13+
use OCP\AppFramework\Services\IAppConfig;
14+
use OCP\Files\File;
15+
use OCP\TaskProcessing\Exception\ProcessingException;
16+
use OCP\TaskProcessing\ISynchronousProvider;
17+
use OCP\TaskProcessing\TaskTypes\ImageToTextOpticalCharacterRecognition;
18+
use RuntimeException;
19+
20+
class FakeOcrProvider implements ISynchronousProvider {
21+
22+
public function __construct(
23+
protected IAppConfig $appConfig,
24+
) {
25+
}
26+
27+
public function getId(): string {
28+
return Application::APP_ID . '-image2text-ocr';
29+
}
30+
31+
public function getName(): string {
32+
return 'Fake OCR task processing provider';
33+
}
34+
35+
public function getTaskTypeId(): string {
36+
return ImageToTextOpticalCharacterRecognition::ID;
37+
}
38+
39+
public function getExpectedRuntime(): int {
40+
return 1;
41+
}
42+
43+
public function getInputShapeEnumValues(): array {
44+
return [];
45+
}
46+
47+
public function getInputShapeDefaults(): array {
48+
return [];
49+
}
50+
51+
public function getOptionalInputShape(): array {
52+
return [];
53+
}
54+
55+
public function getOptionalInputShapeEnumValues(): array {
56+
return [];
57+
}
58+
59+
public function getOptionalInputShapeDefaults(): array {
60+
return [];
61+
}
62+
63+
public function getOutputShapeEnumValues(): array {
64+
return [];
65+
}
66+
67+
public function getOptionalOutputShape(): array {
68+
return [];
69+
}
70+
71+
public function getOptionalOutputShapeEnumValues(): array {
72+
return [];
73+
}
74+
75+
public function process(?string $userId, array $input, callable $reportProgress): array {
76+
if ($this->appConfig->getAppValueBool('fail-' . $this->getId())) {
77+
throw new ProcessingException('Failing as set by AppConfig');
78+
}
79+
80+
if (!isset($input['input']) || !is_array($input['input'])) {
81+
throw new RuntimeException('Invalid input');
82+
}
83+
$outputs = [];
84+
foreach ($input['input'] as $i => $inputImage) {
85+
if (!($inputImage instanceof File) || !$inputImage->isReadable()) {
86+
throw new RuntimeException('Invalid input images');
87+
}
88+
$outputs[] = '[' . $i . '] This is a fake OCR result.';
89+
}
90+
91+
return ['output' => $outputs];
92+
}
93+
}

0 commit comments

Comments
 (0)