From 0a97b37244b1505b0fb2ccc1f492cb2968195ab9 Mon Sep 17 00:00:00 2001 From: Timo Bryant Date: Fri, 5 Jan 2024 21:35:02 +0100 Subject: [PATCH] add docthor-core --- apps/documentViewerKorge/build.gradle.kts | 8 +++-- .../de/itkl/documentViewerKorge/main.kt | 31 ++++++++++------ ...cthor.kotlin-common-conventions.gradle.kts | 2 +- libraries/docthor-core/build.gradle.kts | 15 ++++++++ .../de/itkl/docthor/core/DocumentViewer.kt | 36 +++++++++++++++++++ 5 files changed, 78 insertions(+), 14 deletions(-) create mode 100644 libraries/docthor-core/build.gradle.kts create mode 100644 libraries/docthor-core/src/main/kotlin/de/itkl/docthor/core/DocumentViewer.kt diff --git a/apps/documentViewerKorge/build.gradle.kts b/apps/documentViewerKorge/build.gradle.kts index 5377557..4a61bbb 100644 --- a/apps/documentViewerKorge/build.gradle.kts +++ b/apps/documentViewerKorge/build.gradle.kts @@ -1,12 +1,14 @@ import korlibs.korge.gradle.korge -import korlibs.korge.gradle.targets.jvm.JvmAddOpens -import korlibs.korge.gradle.targets.jvm.JvmAddOpens.beforeJava9 -import korlibs.korge.gradle.targets.jvm.KorgeJavaExec plugins { id("com.soywiz.korge") version "5.3.0" } +dependencies { + jvmMainImplementation("ch.qos.logback:logback-classic:1.4.14") + jvmMainImplementation(project(":libraries:docthor-core")) +} + korge { targetJvm() serializationJson() diff --git a/apps/documentViewerKorge/src/jvmMain/kotlin/de/itkl/documentViewerKorge/main.kt b/apps/documentViewerKorge/src/jvmMain/kotlin/de/itkl/documentViewerKorge/main.kt index a8012e6..35e1606 100644 --- a/apps/documentViewerKorge/src/jvmMain/kotlin/de/itkl/documentViewerKorge/main.kt +++ b/apps/documentViewerKorge/src/jvmMain/kotlin/de/itkl/documentViewerKorge/main.kt @@ -1,31 +1,32 @@ +import de.itkl.docthor.core.DocumentViewer +import de.itkl.textprocessing.Document import korlibs.event.Key -import korlibs.image.bitmap.context2d import korlibs.korge.* import korlibs.korge.scene.* import korlibs.korge.view.* import korlibs.image.color.* -import korlibs.image.font.readBitmapFont import korlibs.image.format.* import korlibs.io.file.std.* import korlibs.korge.input.* import korlibs.korge.tween.get import korlibs.korge.tween.tween -import korlibs.korge.ui.uiButton -import korlibs.korge.ui.uiCheckBox import korlibs.math.geom.* +import korlibs.math.geom.shape.toShape2D +import korlibs.math.geom.shape.toShape2d +import korlibs.math.geom.vector.VectorPath import korlibs.math.interpolation.Easing -import korlibs.render.platform.DummyOpenglContext.scaleFactor +import java.nio.file.Paths import kotlin.time.Duration.Companion.seconds suspend fun main() { + val document = DocumentViewer().loadTestDocument(Paths.get("assets/xs-reg"), "00001.jpg") Korge(windowSize = Size(512, 512), backgroundColor = Colors["#2b2b2b"]) { val sceneContainer = sceneContainer() - - sceneContainer.changeTo { ViewDocument() } + sceneContainer.changeTo { ViewDocument(document) } } } -class ViewDocument : Scene() { +class ViewDocument(private val document: Document) : Scene() { override suspend fun SContainer.sceneMain() { var scaleFactor = 0.5 var offset = Point(0.0,0.0) @@ -69,8 +70,18 @@ class ViewDocument : Scene() { } } - val imageFile = localCurrentDirVfs["assets/xs-reg/00001.jpg"].readBitmap() - image(imageFile) } + val imageFile = localCurrentDirVfs["assets/xs-reg/00001.jpg"].readBitmap() + image(imageFile) + document.retrieveOcrPages().first().words.forEach { word -> + + } + + val shape = VectorPath { + moveTo(0, 0) + lineTo(100, 0) + lineTo(100, 100) + close() + }.toShape2D() } } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/docthor.kotlin-common-conventions.gradle.kts b/buildSrc/src/main/kotlin/docthor.kotlin-common-conventions.gradle.kts index a997a22..1d5113f 100644 --- a/buildSrc/src/main/kotlin/docthor.kotlin-common-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/docthor.kotlin-common-conventions.gradle.kts @@ -13,7 +13,7 @@ repositories { dependencies { val koin_version = "3.5.3" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") - implementation("io.insert-koin:koin-core:$koin_version") + api("io.insert-koin:koin-core:$koin_version") implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2") diff --git a/libraries/docthor-core/build.gradle.kts b/libraries/docthor-core/build.gradle.kts new file mode 100644 index 0000000..ab306d9 --- /dev/null +++ b/libraries/docthor-core/build.gradle.kts @@ -0,0 +1,15 @@ +dependencies { + fun addProjects(vararg names: String) { + names.forEach { + api(project(":libraries:$it")) + } + } + + addProjects( + "assetmanager", + "core-api", + "textprocessing", + "httpClient", + "tui", + ) +} \ No newline at end of file diff --git a/libraries/docthor-core/src/main/kotlin/de/itkl/docthor/core/DocumentViewer.kt b/libraries/docthor-core/src/main/kotlin/de/itkl/docthor/core/DocumentViewer.kt new file mode 100644 index 0000000..81e6602 --- /dev/null +++ b/libraries/docthor-core/src/main/kotlin/de/itkl/docthor/core/DocumentViewer.kt @@ -0,0 +1,36 @@ +package de.itkl.docthor.core + +import de.itkl.assetmanager.assetManagerModule +import de.itkl.core_api.coreApiModule +import de.itkl.httpClient.clients.MsOcr +import de.itkl.httpClient.httpClientModule +import de.itkl.textprocessing.CorpusFactory +import de.itkl.textprocessing.Document +import de.itkl.textprocessing.textProcessingModule +import de.itkl.tui.tuiModule +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject +import org.koin.core.context.startKoin +import java.nio.file.Path + +class DocumentViewer : KoinComponent { + + init { + startKoin { + modules( + coreApiModule, + textProcessingModule, + tuiModule, + assetManagerModule, + httpClientModule + ) + } + } + suspend fun loadTestDocument(corpusPath: Path, documentName: String): Document { + val corpus = CorpusFactory().load(corpusPath.toAbsolutePath().toString()) + val document = corpus.document(documentName) + val ocrExtractor: MsOcr by inject() + document.process(ocrExtractor) + return document + } +}