dwani 0.1.14__py3-none-any.whl → 0.1.17__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
dwani/__init__.py CHANGED
@@ -53,8 +53,12 @@ class translate:
53
53
 
54
54
  class document:
55
55
  @staticmethod
56
- def run_ocr(file_path, language="eng_Latn", model="gemma3"):
57
- return _get_client().document_ocr(file_path, language, model)
56
+ def run_ocr_number(file_path, page_number=1, model="gemma3"):
57
+ return _get_client().document_ocr_number(file_path, page_number, model)
58
+
59
+ @staticmethod
60
+ def run_ocr_all(file_path, model="gemma3"):
61
+ return _get_client().document_ocr_all(file_path, model)
58
62
 
59
63
  @staticmethod
60
64
  def run_summarize(file_path, page_number=1, src_lang="eng_Latn", tgt_lang="kan_Knda", model="gemma3"):
dwani/client.py CHANGED
@@ -43,9 +43,13 @@ class DwaniClient:
43
43
  from .asr import asr_transcribe
44
44
  return asr_transcribe(self, file_path=file_path, language=language)
45
45
 
46
- def document_ocr(self, file_path, language=None, model="gemma3"):
47
- from .docs import document_ocr
48
- return document_ocr(self, file_path=file_path, language=language, model=model)
46
+ def document_ocr_number(self, file_path, page_number=1,model="gemma3"):
47
+ from .docs import document_ocr_number
48
+ return document_ocr_number(self, file_path=file_path, page_number=page_number, model=model)
49
+
50
+ def document_ocr_all(self, file_path,model="gemma3"):
51
+ from .docs import document_ocr_all
52
+ return document_ocr_all(self, file_path=file_path, model=model)
49
53
 
50
54
  def document_summarize(self, file_path, page_number=1, src_lang="eng_Latn", tgt_lang="kan_Knda", model="gemma3"):
51
55
  from .docs import document_summarize
dwani/docs.py CHANGED
@@ -40,21 +40,19 @@ def validate_model(model):
40
40
  raise ValueError(f"Unsupported model: {model}. Supported models: {VALID_MODELS}")
41
41
  return model
42
42
 
43
- def document_ocr(client, file_path, language=None, model="gemma3"):
43
+ def document_ocr_all(client, file_path, model="gemma3"):
44
44
  """OCR a document (image/PDF) and return extracted text."""
45
- logger.debug(f"Calling document_ocr: file_path={file_path}, language={language}, model={model}")
45
+ logger.debug(f"Calling document_ocr: file_path={file_path}, model={model}")
46
46
  validate_model(model)
47
47
 
48
48
  data = {"model": model}
49
- if language:
50
- data["language"] = normalize_language(language)
51
-
49
+
52
50
  with open(file_path, "rb") as f:
53
51
  mime_type = "application/pdf" if file_path.lower().endswith('.pdf') else "image/png"
54
52
  files = {"file": (file_path, f, mime_type)}
55
53
  try:
56
54
  resp = requests.post(
57
- f"{client.api_base}/v1/document/ocr",
55
+ f"{client.api_base}/v1/extract-text-all",
58
56
  headers=client._headers(),
59
57
  files=files,
60
58
  data=data,
@@ -68,6 +66,33 @@ def document_ocr(client, file_path, language=None, model="gemma3"):
68
66
  logger.debug(f"OCR response: {resp.status_code}")
69
67
  return resp.json()
70
68
 
69
+
70
+ def document_ocr_number(client, file_path, page_number=1, model="gemma3"):
71
+ """OCR a document (image/PDF) and return extracted text."""
72
+ logger.debug(f"Calling document_ocr: file_path={file_path}, model={model}")
73
+ validate_model(model)
74
+
75
+ data = {"model": model,
76
+ "page_number": str(page_number)}
77
+
78
+ with open(file_path, "rb") as f:
79
+ mime_type = "application/pdf" if file_path.lower().endswith('.pdf') else "image/png"
80
+ files = {"file": (file_path, f, mime_type)}
81
+ try:
82
+ resp = requests.post(
83
+ f"{client.api_base}/v1/extract-text",
84
+ headers=client._headers(),
85
+ files=files,
86
+ data=data,
87
+ timeout=60
88
+ )
89
+ resp.raise_for_status()
90
+ except requests.RequestException as e:
91
+ logger.error(f"OCR request failed: {str(e)}")
92
+ raise DwaniAPIError(resp) if 'resp' in locals() else DwaniAPIError.from_exception(e)
93
+
94
+ logger.debug(f"OCR response: {resp.status_code}")
95
+ return resp.json()
71
96
  def document_summarize(client, file_path, page_number=1, src_lang="eng_Latn", tgt_lang="kan_Knda", model="gemma3"):
72
97
  """Summarize a PDF document with language and page number options."""
73
98
  logger.debug(f"Calling document_summarize: file_path={file_path}, page_number={page_number}, src_lang={src_lang}, tgt_lang={tgt_lang}, model={model}")
@@ -256,10 +281,15 @@ def doc_query_kannada(
256
281
 
257
282
  class Documents:
258
283
  @staticmethod
259
- def ocr(file_path, language=None, model="gemma3"):
284
+ def run_ocr_number(file_path, page_number=1,model="gemma3"):
285
+ from .client import DwaniClient
286
+ client = DwaniClient()
287
+ return document_ocr_number(client, file_path, page_number=page_number, model=model)
288
+ @staticmethod
289
+ def run_ocr_all(file_path, model="gemma3"):
260
290
  from .client import DwaniClient
261
291
  client = DwaniClient()
262
- return document_ocr(client, file_path, language, model)
292
+ return document_ocr_all(client, file_path, model)
263
293
 
264
294
  @staticmethod
265
295
  def summarize(file_path, page_number=1, src_lang="eng_Latn", tgt_lang="kan_Knda", model="gemma3"):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dwani
3
- Version: 0.1.14
3
+ Version: 0.1.17
4
4
  Summary: Multimodal API for Indian + European languages (Chat, Vision, TTS, ASR, Translate, Docs)
5
5
  Author-email: sachin <python@dwani.ai>
6
6
  License: MIT License
@@ -64,13 +64,26 @@ dwani.api_key = os.getenv("DWANI_API_KEY")
64
64
  dwani.api_base = os.getenv("DWANI_API_BASE_URL")
65
65
  ```
66
66
 
67
- - Check examples folder for detailed use cases
67
+
68
+ ---
69
+
70
+ - Source Code : [https://github.com/dwani-ai/dwani-python-sdk](https://github.com/dwani-ai/dwani-python-sdk)
71
+ - Check examples folder for detailed use cases
72
+
68
73
  - [examples/chat.py](examples/chat.py)
69
74
  - [examples/vision.py](examples/vision.py)
70
75
  - [examples/docs.py](examples/docs.py)
71
76
  - [examples/speech.py](examples/speech.py)
72
77
  - [examples/asr.py](examples/asr.py)
73
78
 
79
+ #### Document - OCR
80
+ ```python
81
+ result = dwani.Documents.run_ocr_number(file_path="dwani-workshop.pdf", page_number=1, model="gemma3")
82
+ print(result)
83
+ ```
84
+ ```json
85
+ {'page_content': "Here's the plain text extracted from the image:\n\ndwani's Goals\n\nTo integrate and enhance the following models and services for Kannada:\n\n* **Automatic Speech Recognition (ASR):**"}
86
+ ```
74
87
 
75
88
 
76
89
  ### Text Query
@@ -0,0 +1,14 @@
1
+ dwani/__init__.py,sha256=TCAqgbvZjztYG0qzFQfafUG9R8mf1bqNWSdoVeopR1M,3186
2
+ dwani/asr.py,sha256=BAdqivQd57NJZX1dSY-J6EFi8TDdyuhf_AyCPcQ0M7w,1719
3
+ dwani/audio.py,sha256=CFQrYU-KLwO7pCh_R7c1SSDJ6bugE5_av7lV8XTl-dY,936
4
+ dwani/chat.py,sha256=Tui52XBhUyDyN2rOFoLme4oB0Q8fkD9_0tFDAnRzoaU,2979
5
+ dwani/client.py,sha256=xV6TpzMV9bR9goPg1tnrDopfxN_N7e-7W3MAUPwCNVs,3594
6
+ dwani/docs.py,sha256=uEYFaR9U8gEtvzr9Ke80Z1T5DwYLom6uk22wBOsVAtQ,11794
7
+ dwani/exceptions.py,sha256=n06dPmR20rS4T3sJBWHQhGxzg4SJKzird9Hx0YTwwo0,226
8
+ dwani/translate.py,sha256=c03N8-tN49IBcTA6GMOkrJ3MaVzZ12RnYdLQwRbEeoQ,2794
9
+ dwani/vision.py,sha256=FviGewoV936CSv_K-latw0t3ZhSSCOF5LaGaq1oE4uA,3607
10
+ dwani-0.1.17.dist-info/licenses/LICENSE,sha256=IAD8tbwWZbPWHXgYjabHoMv0aaUzZUYzYiEbfhTCisY,1070
11
+ dwani-0.1.17.dist-info/METADATA,sha256=4rKh-XX9JYElwkli9wUrh5xUmrC6fRXN7Q934bggjKA,6030
12
+ dwani-0.1.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
13
+ dwani-0.1.17.dist-info/top_level.txt,sha256=AM5EhkyuO_EXQFR9JIxEV6tAYMCCyc-a1dLifpCGBUk,6
14
+ dwani-0.1.17.dist-info/RECORD,,
@@ -1,14 +0,0 @@
1
- dwani/__init__.py,sha256=rV93n_1nOed4ak7NOcwtDjxsT7JbDIivhtRRcrDR80A,3040
2
- dwani/asr.py,sha256=BAdqivQd57NJZX1dSY-J6EFi8TDdyuhf_AyCPcQ0M7w,1719
3
- dwani/audio.py,sha256=CFQrYU-KLwO7pCh_R7c1SSDJ6bugE5_av7lV8XTl-dY,936
4
- dwani/chat.py,sha256=Tui52XBhUyDyN2rOFoLme4oB0Q8fkD9_0tFDAnRzoaU,2979
5
- dwani/client.py,sha256=fGtnY9L0u_mymY7xUeFDhCBX7P7fd4WNko7WTDgrDV4,3394
6
- dwani/docs.py,sha256=Cp0Gtudug79GH25toB-Npl35ZFA0TM32oZF2xH1VmNY,10598
7
- dwani/exceptions.py,sha256=n06dPmR20rS4T3sJBWHQhGxzg4SJKzird9Hx0YTwwo0,226
8
- dwani/translate.py,sha256=c03N8-tN49IBcTA6GMOkrJ3MaVzZ12RnYdLQwRbEeoQ,2794
9
- dwani/vision.py,sha256=FviGewoV936CSv_K-latw0t3ZhSSCOF5LaGaq1oE4uA,3607
10
- dwani-0.1.14.dist-info/licenses/LICENSE,sha256=IAD8tbwWZbPWHXgYjabHoMv0aaUzZUYzYiEbfhTCisY,1070
11
- dwani-0.1.14.dist-info/METADATA,sha256=dHauJTsE8ujnm8Ak8QU0hJSiANxTjL6LoZIKZ3QPNCg,5543
12
- dwani-0.1.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
13
- dwani-0.1.14.dist-info/top_level.txt,sha256=AM5EhkyuO_EXQFR9JIxEV6tAYMCCyc-a1dLifpCGBUk,6
14
- dwani-0.1.14.dist-info/RECORD,,
File without changes