From 84f1b0c95b7b3ec08f9957faf7b5fc19e2bcfb8d Mon Sep 17 00:00:00 2001 From: jianjiang <jianjiang@iflytek.com> Date: Fri, 21 Apr 2023 15:19:39 +0800 Subject: [PATCH] ok --- .gitea/workflows/build.yaml | 48 ++++++++++++++++++++++++++++++++++++ Dockerfile | 10 ++++++++ app.py | 39 +++++++++++++++++++++++++++++ handwritten.jpeg | Bin 0 -> 4324 bytes requirements.txt | 4 +++ 5 files changed, 101 insertions(+) create mode 100644 .gitea/workflows/build.yaml create mode 100644 Dockerfile create mode 100644 app.py create mode 100644 handwritten.jpeg create mode 100644 requirements.txt diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..1ed1ca9 --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,48 @@ +name: Build +run-name: ${{ github.actor }} is upgrade release 🚀 +on: [push] +env: + REPOSITORY: ${{ github.repository }} + COMMIT_ID: ${{ github.sha }} +jobs: + Build-Deploy-Actions: + runs-on: ubuntu-latest + steps: + - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!" + - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v3 + - + name: Setup Git LFS + run: | + git lfs install + git lfs fetch + git lfs checkout + - name: List files in the repository + run: | + ls ${{ github.workspace }} + - + name: Docker Image Info + id: image-info + run: | + echo "::set-output name=image_name::$(echo $REPOSITORY | tr '[:upper:]' '[:lower:]')" + echo "::set-output name=image_tag::${COMMIT_ID:0:10}" + - + name: Login to Docker Hub + uses: docker/login-action@v2 + with: + registry: artifacts.iflytek.com + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Build and push + run: | + docker version + docker buildx build -t artifacts.iflytek.com/docker-private/atp/${{ steps.image-info.outputs.image_name }}:${{ steps.image-info.outputs.image_tag }} . --file ${{ github.workspace }}/Dockerfile --load + docker push artifacts.iflytek.com/docker-private/atp/${{ steps.image-info.outputs.image_name }}:${{ steps.image-info.outputs.image_tag }} + docker rmi artifacts.iflytek.com/docker-private/atp/${{ steps.image-info.outputs.image_name }}:${{ steps.image-info.outputs.image_tag }} + - run: echo "🍏 This job's status is ${{ job.status }}." + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..671699b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3.8.13 + +WORKDIR /app + +COPY . /app + +RUN pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple +RUN pip install -r requirements.txt + +CMD ["python", "app.py"] diff --git a/app.py b/app.py new file mode 100644 index 0000000..8e46cca --- /dev/null +++ b/app.py @@ -0,0 +1,39 @@ +from transformers import TrOCRProcessor, VisionEncoderDecoderModel +from PIL import Image +import requests +import gradio as gr +from gradio.themes.utils import sizes + +theme = gr.themes.Default(radius_size=sizes.radius_none).set( + block_label_text_color = '#4D63FF', + block_title_text_color = '#4D63FF', + button_primary_text_color = '#4D63FF', + button_primary_background_fill='#FFFFFF', + button_primary_border_color='#4D63FF', + button_primary_background_fill_hover='#EDEFFF', +) + + +processor = TrOCRProcessor.from_pretrained('microsoft/trocr-base-handwritten') +model = VisionEncoderDecoderModel.from_pretrained('microsoft/trocr-base-handwritten') + +def ocr(image): + pixel_values = processor(images=image, return_tensors="pt").pixel_values + generated_ids = model.generate(pixel_values) + generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0] + + return generated_text + + +demo = gr.Interface(fn=ocr, + inputs='image', + outputs='text', + title = "ocr", + theme = theme, + examples = ['handwritten.jpeg']) + + +if __name__ == "__main__": +# demo.queue(concurrency_count=3).launch(server_name = "0.0.0.0", server_port = 7010) + demo.launch() + diff --git a/handwritten.jpeg b/handwritten.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ccc96e50d12dd526437c76a794b5e9ebfcc40c37 GIT binary patch literal 4324 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 KpB{u<j{h55Gr>jx literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c77de10 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +gradio +transformers +torch +Pillow