Skip to content

Commit 3812115

Browse files
committed
Add sdk functions to extract w9 documents
1 parent 3f4adca commit 3812115

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

veryfi/client.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,49 @@ def process_document_url(
215215
request_arguments.update(kwargs)
216216
return self._request("POST", endpoint_name, request_arguments)
217217

218+
def process_w9_document_url(self, file_url: str, file_name: Optional[str] = None, **kwargs: Dict) -> Dict:
219+
"""
220+
Process W9 Document from url and extract all the fields from it.
221+
222+
:param file_name: Name of file, eg. receipt.jpg
223+
:param file_url: Publicly accessible URL to a file, e.g. "https://cdn.example.com/receipt.jpg".
224+
:param kwargs: Additional request parameters
225+
226+
:return: Data extracted from the document.
227+
"""
228+
if file_name is None:
229+
file_name = os.path.basename(file_url)
230+
endpoint_name = "/w9s/"
231+
request_arguments = {
232+
'file_name': file_name,
233+
'file_url': file_url,
234+
}
235+
request_arguments.update(kwargs)
236+
return self._request("POST", endpoint_name, request_arguments)
237+
238+
def process_w9_document(self, file_path: str, file_name: Optional[str] = None, **kwargs):
239+
"""
240+
Process W9 Document from url and extract all the fields from it.
241+
242+
:param file_path: Path on disk to a file to submit for data extraction
243+
:param file_name: Name of file, eg. receipt.jpg
244+
:param kwargs: Additional request parameters
245+
246+
:return: Data extracted from the document.
247+
"""
248+
endpoint_name = "/w9s/"
249+
if file_name is None:
250+
file_name = os.path.basename(file_path)
251+
with open(file_path, "rb") as image_file:
252+
base64_encoded_string = base64.b64encode(image_file.read()).decode("utf-8")
253+
request_arguments = {
254+
"file_name": file_name,
255+
"file_data": base64_encoded_string,
256+
}
257+
request_arguments.update(kwargs)
258+
document = self._request("POST", endpoint_name, request_arguments)
259+
return document
260+
218261
def delete_document(self, document_id):
219262
"""
220263
Delete Document from Veryfi

0 commit comments

Comments
 (0)