Index: /main/trunk/model-interfaces-dev/atea/ocr/public/images/rotate-arrow.svg
===================================================================
--- /main/trunk/model-interfaces-dev/atea/ocr/public/images/rotate-arrow.svg	(revision 35743)
+++ /main/trunk/model-interfaces-dev/atea/ocr/public/images/rotate-arrow.svg	(revision 35743)
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="256"
+   height="256"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="rotate-arrow.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 128 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="256 : 128 : 1"
+       inkscape:persp3d-origin="128 : 85.333333 : 1"
+       id="perspective3798" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.979899"
+     inkscape:cx="97.436884"
+     inkscape:cy="98.529161"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     showborder="true"
+     inkscape:showpageshadow="true"
+     borderlayer="false"
+     inkscape:snap-page="true"
+     inkscape:snap-bbox="true"
+     inkscape:object-nodes="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:window-width="1855"
+     inkscape:window-height="1056"
+     inkscape:window-x="65"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-796.36218)">
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:4.86589956;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
+       d="m 162.23542,799.27991 7.54214,26.54956 c -68.10943,18.7315 -121.297696,72.13417 -139.742556,140.3508 l -27.0969779,-7.54215 11.5565109,44.88788 11.586924,44.888 33.057706,-32.4496 33.057705,-32.47978 -27.796451,-7.72461 C 79.524864,919.45419 123.25726,875.45558 179.47895,860.10366 l 8.02874,28.37427 32.2974,-33.27059 32.267,-33.24017 -44.91833,-11.34363 -44.91834,-11.34363 z"
+       id="path3001"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
Index: /main/trunk/model-interfaces-dev/atea/ocr/src/App.vue
===================================================================
--- /main/trunk/model-interfaces-dev/atea/ocr/src/App.vue	(revision 35742)
+++ /main/trunk/model-interfaces-dev/atea/ocr/src/App.vue	(revision 35743)
@@ -1,13 +1,11 @@
 <template>
 <div class="root">
-    <div class="app-bar theme-primary">
+    <!-- <div class="app-bar theme-primary">
         <div class="app-bar-content">
             <span class="heading1">{{ translations.get("Title") }}</span>
         </div>
-    </div>
+    </div> -->
 
-    <div class="content">
-        <main-page />
-    </div>
+    <main-page class="content" />
 </div>
 </template>
Index: /main/trunk/model-interfaces-dev/atea/ocr/src/components/EditPage.vue
===================================================================
--- /main/trunk/model-interfaces-dev/atea/ocr/src/components/EditPage.vue	(revision 35742)
+++ /main/trunk/model-interfaces-dev/atea/ocr/src/components/EditPage.vue	(revision 35743)
@@ -1,28 +1,27 @@
 <template>
-<div class="root">
+<div class="edit-page-root">
     <div class="image-panel">
-        <table v-if="rotateMode" class="rotate-guide">
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-            <tr><hr /></tr>
-        </table>
-
-        <!-- <img :src="imageUrl" class="image" :style="{ filter: filterString, transform: transformString }" /> -->
-        <div class="image-container">
-            <img v-if="rotateMode" src="images/rotate_arrow_64.png" class="rotate-handle rotate-tl" />
-            <img v-if="rotateMode" src="images/rotate_arrow_64.png" class="rotate-handle rotate-tr" />
-            <img v-if="rotateMode" src="images/rotate_arrow_64.png" class="rotate-handle rotate-bl" />
-            <img v-if="rotateMode" src="images/rotate_arrow_64.png" class="rotate-handle rotate-br" />
-
-            <img :src="imageUrl" class="image" :style="{ filter: filterString, transform: transformString }" />
+        <div class="image-container" :style="{ transform: transformString }">
+            <img v-if="rotateMode" src="images/rotate-arrow.svg" class="rotate-handle rotate-tl" @mousedown="allowRotation = true" draggable="false" />
+            <img v-if="rotateMode" src="images/rotate-arrow.svg" class="rotate-handle rotate-tr" @mousedown="allowRotation = true" draggable="false" />
+            <img v-if="rotateMode" src="images/rotate-arrow.svg" class="rotate-handle rotate-bl" @mousedown="allowRotation = true" draggable="false" />
+            <img v-if="rotateMode" src="images/rotate-arrow.svg" class="rotate-handle rotate-br" @mousedown="allowRotation = true" draggable="false" />
+
+            <table v-if="rotateMode" class="rotate-guide" :style="{ transform: transformStringInverted }">
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+                <tr><td><hr /></td></tr>
+            </table>
+
+            <img ref="image" :src="imageUrl" class="image" :style="{ filter: filterString }" />
         </div>
     </div>
@@ -45,8 +44,7 @@
 
 <style lang="scss" scoped>
-.root {
+.edit-page-root {
     display: grid;
     grid-template-columns: 1fr auto;
-    grid-template-rows: 100%;
     align-items: center;
     justify-items: center;
@@ -65,21 +63,21 @@
 
 .image {
-    max-width: 100%;
-    height: auto;
+    max-width: 70vw;
+    max-height: 70vh;
 }
 
 .image-container {
-    max-width: 70%;
-    max-height: 70%;
     position: relative;
     margin: auto;
-    padding: 1em;
+    padding: 1.5em;
+    user-select: none;
 
     .rotate-handle {
         height: 2em;
         position: absolute;
+        z-index: 5;
 
         // Generated with https://codepen.io/sosuke/pen/Pjoqqp using var(--primary-bg-color)
-        filter: invert(16%) sepia(100%) saturate(3091%) hue-rotate(347deg) brightness(75%) contrast(90%);
+        // filter: invert(16%) sepia(100%) saturate(3091%) hue-rotate(347deg) brightness(75%) contrast(90%);
     }
 
@@ -116,6 +114,13 @@
     z-index: 3;
 
-    tr hr {
-        background-color: rgba(var(--bg-color-raw), 0.5);
+    tr {
+        td {
+            vertical-align: center;
+        }
+
+        hr {
+            background-color: rgba(var(--bg-color-raw), 0.5);
+            height: 2px;
+        }
     }
 }
@@ -137,4 +142,5 @@
 <script>
 import { mapState } from "vuex";
+import Jimp from "jimp/es";
 import ToggleButton from "./ToggleButton.vue"
 
@@ -151,5 +157,7 @@
             imageUrl: URL.createObjectURL(this.image),
             invert: false,
-            rotateMode: false
+            rotation: 0,
+            rotateMode: false,
+            allowRotation: false
         }
     },
@@ -167,9 +175,80 @@
             },
             transformString() {
-                return `rotate(${this.rotation}deg)`
+                return `rotate(${this.rotation}deg)`;
+            },
+            transformStringInverted() {
+                return `rotate(-${this.rotation}deg)`;
             }
         })
     },
     methods: {
+        async getImageBlobAsync() {
+            const buffer = Buffer.from(this.image.arrayBuffer());
+            const that = this;
+
+            const modifiedBuffer = await Jimp.read(buffer)
+                .then(async image => {
+                    if (that.invert) {
+                        image.invert();
+                    }
+
+                    // if (that.rotation !== 0) {
+                    //     image.rotate(that.rotation);
+                    // }
+
+                    return await image.getBufferAsync(Jimp.MIME_PNG);
+                });
+
+            return new Blob([ modifiedBuffer ], { type: Jimp.MIME_PNG });
+        },
+
+        onRotateHandleMouseDown(point) {
+            console.log(point);
+            this.rotatePoint = point;
+        },
+        /**
+         * @param {MouseEvent} e The mouse movement event.
+         */
+        onDocumentMouseMove(e) {
+            if (!this.allowRotation) {
+                return;
+            }
+
+            const imageRectangle = this.$refs.image.getBoundingClientRect();
+            const imageCenterX = (imageRectangle.width / 2) + imageRectangle.left;
+            const imageCenterY = (imageRectangle.height / 2) + imageRectangle.top;
+
+            if (e.clientX > imageCenterX) {
+                this.rotation += e.movementY / 8;
+            }
+            else {
+                this.rotation -= e.movementY / 8;
+            }
+
+            if (e.clientY > imageCenterY) {
+                this.rotation -= e.movementX / 8;
+            }
+            else {
+                this.rotation += e.movementX / 8;
+            }
+
+            if (this.rotation < 0) {
+                this.rotation = 360 + this.rotation;
+            }
+            else if (this.rotation > 360) {
+                this.rotation -= 360;
+            }
+        },
+        onDocumentMouseUp() {
+            this.allowRotation = false;
+        }
+    },
+    beforeMount() {
+        document.addEventListener("mousemove", this.onDocumentMouseMove);
+        document.addEventListener("mouseup", this.onDocumentMouseUp);
+    },
+    beforeUnmount() {
+        document.removeEventListener("mousemove", this.onDocumentMouseMove);
+        document.removeEventListener("mouseup", this.onDocumentMouseUp);
     }
 }
Index: in/trunk/model-interfaces-dev/atea/ocr/src/components/ImageDisplay.vue
===================================================================
--- /main/trunk/model-interfaces-dev/atea/ocr/src/components/ImageDisplay.vue	(revision 35742)
+++ 	(revision )
@@ -1,106 +1,0 @@
-<template>
-<div class="root">
-    <div class="control-bar">
-        <label for="input-invert">Invert: </label>
-        <input id="input-invert" type="checkbox" v-model="invert" />
-
-        <label for="input-rotation">Rotation: </label>
-        <input id="input-rotation" type="range" v-model="rotation" min="0" max="360" class="slider-continuous" />
-    </div>
-
-    <img :src="imageUrl" class="image" :style="{ filter: filterString, transform: transformString }" />
-</div>
-</template>
-
-<style scoped lang="scss">
-.image {
-    max-width: 100%;
-    object-fit: contain;
-}
-
-.control-bar {
-    display: flex;
-    align-items: center;
-    gap: 1em;
-}
-</style>
-
-<script>
-import { mapState } from "vuex";
-import Jimp from "jimp/es"
-
-export default {
-    name: "ImageDisplay",
-    props: {
-        imageBuffer: ArrayBuffer,
-        type: String
-    },
-    data() {
-        return {
-            invert: false,
-            rotation: 0,
-            internalBuffer: ArrayBuffer,
-            imageUrl: String
-        }
-    },
-    computed: mapState({
-        translations: state => state.translations,
-        filterString() {
-            let filters = "";
-
-            if (this.invert) {
-                filters += "invert(1) ";
-            }
-
-            return filters;
-        },
-        transformString() {
-            return `rotate(${this.rotation}deg)`
-        }
-    }),
-    watch: {
-        internalBuffer(newValue) {
-            if (this.imageUrl != null) {
-                URL.revokeObjectURL(this.imageUrl);
-            }
-
-            if (newValue === null) {
-                return;
-            }
-
-            const arrayBufferView = new Uint8Array(newValue);
-            const blob = new Blob([ arrayBufferView ], { type: this.type });
-            this.imageUrl = URL.createObjectURL(blob);
-        }
-    },
-    methods: {
-        async getImageBlobAsync() {
-            const buffer = Buffer.from(this.internalBuffer);
-            const that = this;
-
-            const modifiedBuffer = await Jimp.read(buffer)
-                .then(async image => {
-                    if (that.invert) {
-                        image.invert();
-                    }
-
-                    if (that.rotation !== 0) {
-                        image.rotate(that.rotation);
-                    }
-
-                    return await image.getBufferAsync(Jimp.MIME_PNG);
-                });
-
-            return new Blob([ modifiedBuffer ], { type: Jimp.MIME_PNG });
-        }
-    },
-    beforeMount() {
-        this.internalBuffer = this.imageBuffer;
-    },
-    beforeUnmount() {
-        if (this.imageUrl != null) {
-            URL.revokeObjectURL(this.imageUrl);
-        }
-    }
-}
-</script>
Index: /main/trunk/model-interfaces-dev/atea/ocr/src/components/MainPage.vue
===================================================================
--- /main/trunk/model-interfaces-dev/atea/ocr/src/components/MainPage.vue	(revision 35742)
+++ /main/trunk/model-interfaces-dev/atea/ocr/src/components/MainPage.vue	(revision 35743)
@@ -1,40 +1,44 @@
 <template>
-<div class="root">
-    <edit-page v-if="imageToEdit != null" class="image-editor" :image="imageToEdit" @closeRequested="onEditorCloseRequested" />
-
-    <button class="btn-primary spacing-bottom" @click="uploadFile">
-        <span class="material-icons">upload</span>
-        <span>{{ translations.get("Main_UploadImages") }}</span>
-    </button>
-
-    <div v-for="[id, imageInfo] in images" :key="id" class="image-list card"
-        :style="{ 'max-height': imageInfo.isExpanded ? 'none' : '12em' }">
-        <image-display :imageBuffer="imageInfo.buffer" :type="imageInfo.image.type" :ref="id" />
-
-        <div class="controls">
-            <button class="btn-primary" @click="doOcr(id)" :disabled="imageInfo.ocr">
-                <span class="material-icons">play_arrow</span>
-                <span>{{ translations.get("Main_PerformOCR") }}</span>
-            </button>
-
-            <!-- <div v-if="imageInfo.ocr" class="progress-bar-container">
-                <div class="progress-bar-value progress-bar-indeterminate" />
-            </div> -->
-            <button class="btn-primary" @click="imageToEdit = imageInfo.image">Edit</button>
+<div class="main-page-root">
+    <edit-page v-if="showEditor" class="image-editor" :image="image" @closeRequested="onEditorCloseRequested" />
+
+    <div class="paper root-container" :class="{ 'root-container-image-state': image !== null }">
+        <div v-if="image === null" class="upload-area" @click="uploadFile">
+            <span class="heading1">{{ translations.get("Title") }}</span>
+            <span class="material-icons mdi-xl">upload_file</span>
+            <span>Upload an image/PDF</span>
+        </div>
+
+        <div v-if="image !== null" class="image-area">
+            <div class="controls">
+                <button class="btn-primary" @click="doOcr" :disabled="ocrInProgress">
+                    <span class="material-icons">play_arrow</span>
+                    <span>{{ translations.get("Main_PerformOCR") }}</span>
+                </button>
+
+                <button class="btn-primary" @click="showEditor = true">
+                    <span class="material-icons">edit</span>
+                    <span>Edit Image</span>
+                </button>
+
+                <button class="btn-primary" @click="reset" :disabled="ocrInProgress">
+                    <span class="material-icons">restart_alt</span>
+                    <span>New</span>
+                </button>
+
+                <div v-if="ocrInProgress" class="progress-bar-container">
+                    <div class="progress-bar-value progress-bar-indeterminate" />
+                </div>
+            </div>
+
+            <img class="image-display" :src="imageUrl" />
 
             <div class="text-container">
-                <pre>{{ imageInfo.text }}</pre>
+                <pre>{{ ocrResult }}</pre>
             </div>
         </div>
-
-        <div class="expander-spacer" />
-        <div v-if="!imageInfo.isExpanded" class="washout" />
-
-        <button class="btn-primary theme-flat expander" @click="imageInfo.isExpanded = !imageInfo.isExpanded">
-            v Expand
-        </button>
     </div>
 
-    <input ref="fileInput" type="file" @input="onFilesChanged" class="hidden" multiple
+    <input ref="fileInput" type="file" @input="onFilesChanged" class="hidden"
         accept="image/png,image/jpeg,image/gif,image/bmp,image/tiff,image/webp,application/pdf" />
 </div>
@@ -42,11 +46,44 @@
 </template>
 
-<style scoped lang="scss">
+<style lang="scss" scoped>
+.main-page-root {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.root-container {
+    padding: 1em;
+    transition-duration: var(--transition-duration);
+}
+
+.root-container-image-state {
+    width: calc(100% - 3em);
+    height: calc(100% - 3em);
+}
+
+.upload-area {
+    display: grid;
+    grid-template-columns: auto auto;
+    grid-template-rows: auto 1fr;
+    align-items: center;
+    justify-items: center;
+
+    padding: 2em;
+    gap: 1em;
+
+    font-size: 2rem;
+    cursor: pointer;
+    border: 3px dashed var(--bg-color);
+    border-radius: var(--border-radius);
+
+    .heading1 {
+        grid-column-start: span 2;
+        color: #666;
+    }
+}
+
 .hidden {
     display: none;
-}
-
-.spacing-bottom {
-    margin-bottom: 1em;
 }
 
@@ -60,38 +97,34 @@
 }
 
-.image-list {
+.image-area {
     display: grid;
     grid-template-columns: 1fr 1fr;
+    grid-template-rows: auto 1fr;
+    height: 100%;
+
     gap: 1rem;
+    align-items: center;
+    justify-items: center;
 
     position: relative;
     overflow: hidden;
 
-    margin-bottom: 1rem;
-
-    .expander {
-        position: absolute;
-        bottom: 0;
+    .text-container {
+        height: 100%;
         width: 100%;
-        z-index: 2;
     }
-
-    .expander-spacer {
-        height: 1em;
-    }
-
-    .washout {
-        position: absolute;
-        bottom: 0;
-        height: 60%;
-        width: 100%;
-        background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgb(247, 247, 247) 95%);
-    }
+}
+
+.image-display {
+    border: 1px solid #444;
+    max-width: 100%;
+    max-height: 80vh;
+    object-fit: contain;
 }
 
 .controls {
     display: flex;
-    flex-direction: column;
     gap: 1em;
+    grid-column-start: span 2;
 }
 </style>
@@ -100,7 +133,6 @@
 import { mapState } from "vuex";
 import EditPage from "./EditPage.vue";
-import ImageDisplay from "./ImageDisplay.vue"
 import OcrService, { OcrOptions } from "../js/OcrService"
-import Util from "../js/Util";
+import { log } from "../js/Util";
 
 const ocrService = new OcrService();
@@ -109,12 +141,14 @@
     name: "MainPage",
     components: {
-        ImageDisplay,
         EditPage
     },
     data() {
         return {
-            /** @type {Map<String, {image: File, buffer: ArrayBuffer, text: String, ocr: Boolean, isExpanded: Boolean}>} */
-            images: new Map(),
-            imageToEdit: null
+            /** @type {File} */
+            image: null,
+            imageUrl: null,
+            ocrInProgress: false,
+            ocrResult: null,
+            showEditor: false
         }
     },
@@ -131,40 +165,46 @@
             /** @type {File[]} */
             const files = this.$refs.fileInput.files;
-            if (files === null || files === undefined || files.length < 1) {
+            if (files === null || files === undefined || files.length !== 1) {
                 return;
             }
 
-            for (const file of files) {
-                const buffer = await file.arrayBuffer();
-
-                this.images.set(
-                    Util.generateUuid(),
+            this.image = files[0];
+            this.imageUrl = URL.createObjectURL(this.image);
+        },
+        async doOcr() {
+            try {
+                this.ocrInProgress = true;
+
+                const imageBlob = await this.$refs.imageEditor.getImageBlobAsync();
+
+                const result = await ocrService.run([
                     {
-                        image: file,
-                        buffer: buffer
+                        image: imageBlob,
+                        options: new OcrOptions(false)
                     }
-                )
-            }
-        },
-        async doOcr(id) {
-            // TODO: Catch and log error
-
-            const imageInfo = this.images.get(id);
-            imageInfo.ocr = true;
-
-            const imageBlob = await this.$refs[id].getImageBlobAsync();
-
-            const result = await ocrService.run([
-                {
-                    image: imageBlob,
-                    options: new OcrOptions(false)
-                }
-            ]);
-
-            imageInfo.ocr = false;
-            imageInfo.text = result[0].text;
+                ]);
+
+                this.ocrResult = result[0].text;
+            }
+            catch (ex) {
+                // TODO: Display error
+                log("Failed to perform OCR", "error");
+                log(ex, "error");
+            }
+            finally {
+                this.ocrInProgress = false;
+            }
         },
         onEditorCloseRequested() {
-            this.imageToEdit = null;
+            this.showEditor = false;
+        },
+        reset() {
+            this.image = null;
+            URL.revokeObjectURL(this.imageUrl);
+            this.imageUrl = null;
+            this.ocrInProgress = false;
+            this.ocrResult = null;
+            this.showEditor = false;
+            this.$refs.fileInput.value = "";
         }
     }
Index: /main/trunk/model-interfaces-dev/atea/ocr/src/main.js
===================================================================
--- /main/trunk/model-interfaces-dev/atea/ocr/src/main.js	(revision 35742)
+++ /main/trunk/model-interfaces-dev/atea/ocr/src/main.js	(revision 35743)
@@ -1,5 +1,4 @@
 import { createApp } from "vue";
 import { createStore } from "vuex"
-import Util from "./js/Util"
 import App from "./App.vue";
 import ToggleButton from "./components/ToggleButton.vue"
@@ -9,8 +8,5 @@
         return {
             /** @type {Map<String, String>} */
-            translations: new Map(),
-            macronisedFileInfos: [],
-            directInput: null,
-            directOutput: []
+            translations: new Map()
         }
     },
@@ -18,16 +14,4 @@
         setTranslations(state, translations) {
             state.translations = translations;
-        },
-        pushFileInfo(state, fileInfo) {
-            state.macronisedFileInfos.push({
-                id: Util.generateUuid(),
-                ...fileInfo
-            });
-        },
-        setDirectInput(state, input) {
-            state.directInput = input;
-        },
-        setDirectOutput(state, output) {
-            state.directOutput = output;
         }
     }
@@ -48,6 +32,6 @@
 /* eslint-disable no-undef */
 if (typeof gs !== "undefined" && gs.text && gs.text.atea && gs.text.atea.ocr) {
-    for (const key in gs.text.atea) {
-        translations.set(key, gs.text.atea[key]);
+    for (const key in gs.text.atea.ocr) {
+        translations.set(key, gs.text.atea.ocr[key]);
     }
 
