Spaces:
Sleeping
Sleeping
File size: 2,097 Bytes
8b6c55a 2e73fb1 8b6c55a 2e73fb1 d8d40d6 858ad43 d8d40d6 d075bff d8d40d6 2e73fb1 8b6c55a d8d40d6 c444b8a 269e4c2 fc29243 8b6c55a 858ad43 8b6c55a 269e4c2 8b6c55a 269e4c2 8b6c55a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
from PIL import Image
import pytesseract
import gradio as gr
import os
from flair.data import Sentence
from flair.models import SequenceTagger
from segtok.segmenter import split_single
tagger = SequenceTagger.load("ner-ontonotes")
langs = []
choices = os.popen("tesseract --list-langs").read().split("\n")[1:-1]
blocks = gr.Blocks()
def get_named_entities(ocr_text: str):
sentence = [Sentence(sent, use_tokenizer=True) for sent in split_single(ocr_text)]
tagger.predict(sentence)
entities = []
for token in sentence:
for entity in token.get_spans("ner"):
entities.append(entity)
print("ENTITIES ", entities)
return entities
# If you don't have tesseract executable in your PATH, include the following:
# pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract'
# Simple image to string
# print(pytesseract.image_to_string(Image.open('eurotext.png')))
# # French text image to string
# print(pytesseract.image_to_string(Image.open('test-european.jpg'), lang='fra'))
# # Get bounding box estimates
# print(pytesseract.image_to_boxes(Image.open('test.png')))
# # Get verbose data including boxes, confidences, line and page numbers
# print(pytesseract.image_to_data(Image.open('test.png')))
# # Get information about orientation and script detection
# print(pytesseract.image_to_osd(Image.open('test.png'))
def run(image, lang="eng"):
result = pytesseract.image_to_string(image, lang=None if lang == [] else lang)
ner = get_named_entities(result)
return result, ner
with gr.Blocks() as demo:
gr.Markdown("## Theatre Programmer")
with gr.Row():
with gr.Column():
image_in = gr.Image(type="pil")
lang = gr.Dropdown(choices, value="eng")
btn = gr.Button("Run")
with gr.Column():
text_out = gr.TextArea()
with gr.Column():
ner = gr.TextArea()
btn.click(fn=run, inputs=[image_in, lang], outputs=[text_out, ner])
demo.launch()
|