Spaces:
Sleeping
Sleeping
File size: 4,739 Bytes
76f42d9 66882a0 76f42d9 66882a0 5f4cce3 76f42d9 66882a0 76f42d9 5f4cce3 76f42d9 5f4cce3 76f42d9 66882a0 76f42d9 66882a0 76f42d9 66882a0 76f42d9 66882a0 76f42d9 66882a0 76f42d9 5f4cce3 66882a0 5f4cce3 66882a0 76f42d9 5f4cce3 76f42d9 66882a0 76f42d9 49bb6dc 76f42d9 5f4cce3 |
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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
import streamlit as st
import PyPDF2
import io
import os
# Updated Unicode mappings
unicodeatoz = ["ब", "द", "अ", "म", "भ", "ा", "न", "ज", "ष्", "व", "प", "ि", "फ", "ल", "य", "उ", "त्र", "च", "क", "त", "ग", "ख", "ध", "ह", "थ", "श"]
unicodeAtoZ = ["ब्", "ध", "ऋ", "म्", "भ्", "ँ", "न्", "ज्", "क्ष्", "व्", "प्", "ी", "ः", "ल्", "इ", "ए", "त्त", "च्", "क्", "त्", "ग्", "ख्", "ध्", "ह्", "थ्", "श्"]
unicode0to9 = ["ण्", "ज्ञ", "द्द", "घ", "द्ध", "छ", "ट", "ठ", "ड", "ढ"]
symbolsDict = {
"~": "ञ्",
"`": "ञ",
"!": "१",
"@": "२",
"#": "३",
"$": "४",
"%": "५",
"^": "६",
"&": "७",
"*": "८",
"(": "९",
")": "०",
"-": "(",
"_": ")",
"+": "ं",
"[": "ृ",
"{": "र्",
"]": "े",
"}": "ै",
"\\": "्",
"|": "्र",
";": "स",
":": "स्",
"'": "ु",
"\"": "ू",
",": ",",
"<": "?",
".": "।",
">": "श्र",
"/": "र",
"?": "रु",
"=": ".",
"ˆ": "फ्",
"Î": "ङ्ख",
"å": "द्व",
"÷": "/"
}
def normalizePreeti(preetitxt):
normalized = ''
previoussymbol = ''
# Additional normalization for complex combinations
preetitxt = preetitxt.replace('qm', 's|').replace('f]', 'ो').replace('km', 'फ').replace('0f', 'ण').replace('If', 'क्ष').replace('if', 'ष').replace('cf', 'आ')
index = -1
while index + 1 < len(preetitxt):
index += 1
character = preetitxt[index]
try:
if preetitxt[index + 2] == '{' and (preetitxt[index + 1] == 'f' or preetitxt[index + 1] == 'ो'):
normalized += '{' + character + preetitxt[index + 1]
index += 2
continue
if preetitxt[index + 1] == '{' and character != 'f':
normalized += '{' + character
index += 1
continue
except IndexError:
pass
if character == 'l':
previoussymbol = 'l'
continue
else:
normalized += character + previoussymbol
previoussymbol = ''
return normalized
def convert(preeti):
converted = ''
normalizedpreeti = normalizePreeti(preeti)
for index, character in enumerate(normalizedpreeti):
try:
if ord(character) >= 97 and ord(character) <= 122:
converted += unicodeatoz[ord(character) - 97]
elif ord(character) >= 65 and ord(character) <= 90:
converted += unicodeAtoZ[ord(character) - 65]
elif ord(character) >= 48 and ord(character) <= 57:
converted += unicode0to9[ord(character) - 48]
else:
converted += symbolsDict[character]
except KeyError:
converted += character
return converted
def extract_text_from_pdf(pdf_file):
text = ''
try:
with open(pdf_file, 'rb') as file:
reader = PyPDF2.PdfReader(file)
for page in reader.pages:
text += page.extract_text()
except Exception as e:
text = f"Error extracting text: {e}"
return text
def process_file(inputfile):
ext = os.path.splitext(inputfile)[1].lower()
if ext == '.pdf':
preeti = extract_text_from_pdf(inputfile)
else:
with open(inputfile, "r", encoding="utf-8") as fp:
preeti = fp.read()
return convert(preeti)
def main():
st.title("Preeti to Unicode Converter")
uploaded_file = st.file_uploader("Choose a PDF or TXT file", type=["pdf", "txt"])
if uploaded_file is not None:
file_extension = os.path.splitext(uploaded_file.name)[1].lower()
if file_extension == ".pdf":
pdf_reader = PyPDF2.PdfReader(io.BytesIO(uploaded_file.read()))
text = ""
for page in pdf_reader.pages:
text += page.extract_text()
else: # .txt file
text = uploaded_file.getvalue().decode("utf-8")
converted_text = convert(text)
st.subheader("Original Text")
st.text_area("", value=text, height=200)
st.subheader("Converted Text")
st.text_area("", value=converted_text, height=200)
# Create a download button for the converted text
st.download_button(
label="Download Converted Text",
data=converted_text.encode("utf-8"),
file_name="converted_text.txt",
mime="text/plain"
)
if __name__ == "__main__":
main()
|