<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Aptos;}
@font-face
{font-family:"Segoe UI Emoji";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:Roboto;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:103618334;
mso-list-template-ids:189286566;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l1
{mso-list-id:494884078;
mso-list-template-ids:-569711266;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:498275751;
mso-list-template-ids:-1639780742;}
@list l2:level1
{mso-level-start-at:2;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l3
{mso-list-id:727193623;
mso-list-template-ids:-584429604;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l3:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l4
{mso-list-id:884828000;
mso-list-template-ids:646494454;}
@list l4:level1
{mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level2
{mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5
{mso-list-id:887037258;
mso-list-template-ids:-1313942320;}
@list l5:level1
{mso-level-start-at:5;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l5:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l6
{mso-list-id:918565936;
mso-list-template-ids:-1396256884;}
@list l6:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l6:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l6:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l6:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l6:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l6:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l6:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l6:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l7
{mso-list-id:1142306743;
mso-list-template-ids:793259694;}
@list l7:level1
{mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l7:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l8
{mso-list-id:1281231254;
mso-list-template-ids:-142569630;}
@list l8:level1
{mso-level-start-at:3;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l8:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l8:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l8:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l8:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l8:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l8:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l8:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l8:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l9
{mso-list-id:1897398508;
mso-list-template-ids:101866038;}
@list l9:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l9:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l9:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l9:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l9:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l9:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l9:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l9:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l10
{mso-list-id:2022078451;
mso-list-template-ids:-120528598;}
@list l10:level1
{mso-level-start-at:4;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l10:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:12.0pt">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">I suspect with a bit more experimentation and or better knowledge here on my part, the following Python script could solve this situation. I used ChatGPT to create this and asked it to find all images in a
word document, get image descriptions from Open AI and then add those descriptions to the document. I couldn’t yet figure out how to have the descriptions used as alt text directly in the Word document, so they are currently added to the end of the document.
I need to learn more about the docx module for Python I expect to solve this situation.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">Additionally, within the script, you may want to adjust the prompt text. This currently generates lengthy descriptions. Also, see that the file locations are currently hard coded to a specific directory on
my computer so you’d want to modify those.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">This does require an Open AI key and money on the account but my experience in generating batches of descriptions with different API uses as I experiment is that in general I’ve spent less than one cent per
description.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">There may be entirely better ways to do this. I just don’t like the default automatic alt text from Word and this was a way to experiment with something I’ve already been doing to try different image description
technology. This is by no means production ready.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">Here is more from ChatGPT on all the requirements and then the script.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">Here is a comprehensive guide to setting up and running a
<b>Python-based script</b> that extracts images from a Word document, generates detailed descriptions using llm, and appends the descriptions to the same document under a dedicated section.<o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:12.0pt">1. Prerequisites<o:p></o:p></span></b></p>
<p class="MsoNormal"><span style="font-size:12.0pt">Before running the script, ensure you have the following installed:<o:p></o:p></span></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoNormal" style="mso-list:l6 level1 lfo8"><b><span style="font-size:12.0pt">Python 3.x</span></b><span style="font-size:12.0pt"> (Recommended: Latest stable version)<o:p></o:p></span></li><ul style="margin-top:0in" type="circle">
<li class="MsoNormal" style="mso-list:l6 level2 lfo8"><span style="font-size:12.0pt">Download & install from:
<a href="https://www.python.org/downloads/">https://www.python.org/downloads/</a><o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l6 level2 lfo8"><span style="font-size:12.0pt">During installation,
<b>check the box</b> for <b>"Add Python to PATH"</b><o:p></o:p></span></li></ul>
<li class="MsoNormal" style="mso-list:l6 level1 lfo8"><b><span style="font-size:12.0pt">Virtual Environment (Recommended but Optional)</span></b><span style="font-size:12.0pt"><o:p></o:p></span></li><ul style="margin-top:0in" type="circle">
<li class="MsoNormal" style="mso-list:l6 level2 lfo8"><span style="font-size:12.0pt">Open
<b>Command Prompt</b> (cmd.exe) and run: <o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l6 level2 lfo8"><span style="font-size:12.0pt">python -m venv myenv<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l6 level2 lfo8"><span style="font-size:12.0pt">myenv\Scripts\activate (For Windows)<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l6 level2 lfo8"><span style="font-size:12.0pt">source myenv/bin/activate (For macOS/Linux)<o:p></o:p></span></li></ul>
<li class="MsoNormal" style="mso-list:l6 level1 lfo8"><b><span style="font-size:12.0pt">Required Python Libraries</span></b><span style="font-size:12.0pt"><br>
Install necessary dependencies via pip:<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l6 level1 lfo8"><span style="font-size:12.0pt">pip install python-docx pillow lxml<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l6 level1 lfo8"><b><span style="font-size:12.0pt">llm CLI Installation</span></b><span style="font-size:12.0pt"> (if not installed)<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l6 level1 lfo8"><span style="font-size:12.0pt">pip install llm<o:p></o:p></span></li></ul>
<p class="MsoNormal"><span style="font-size:12.0pt">Test if llm is correctly installed by running:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">llm --help<o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:12.0pt">2. File Structure Setup<o:p></o:p></span></b></p>
<p class="MsoNormal"><span style="font-size:12.0pt">Ensure you have the following files in the working directory:<o:p></o:p></span></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoNormal" style="mso-list:l1 level1 lfo9"><span style="font-size:12.0pt">testinput.docx → Your input Word document with images<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l1 level1 lfo9"><span style="font-size:12.0pt">testoutput.docx → The script will generate this as the output file<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l1 level1 lfo9"><span style="font-size:12.0pt">extracted_images/ → The script automatically creates this folder for temporary image storage<o:p></o:p></span></li></ul>
<p class="MsoNormal"><b><span style="font-size:12.0pt">3. Running the Script<o:p></o:p></span></b></p>
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoNormal" style="mso-list:l0 level1 lfo10"><b><span style="font-size:12.0pt">Save the script</span></b><span style="font-size:12.0pt"> as process_word_images.py<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l0 level1 lfo10"><b><span style="font-size:12.0pt">Run it from the command line</span></b><span style="font-size:12.0pt">:
<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l0 level1 lfo10"><span style="font-size:12.0pt">python process_word_images.py<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l0 level1 lfo10"><span style="font-size:12.0pt">The script will:
<o:p></o:p></span></li><ul style="margin-top:0in" type="circle">
<li class="MsoNormal" style="mso-list:l0 level2 lfo10"><span style="font-size:12.0pt">Extract images from testinput.docx<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l0 level2 lfo10"><span style="font-size:12.0pt">Send them to llm for detailed descriptions<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l0 level2 lfo10"><span style="font-size:12.0pt">Append a
<b>"Detailed Image Descriptions"</b> section at the end of testoutput.docx, listing each image with its description<o:p></o:p></span></li></ul>
</ol>
<p class="MsoNormal"><b><span style="font-size:12.0pt">4. Verifying Results<o:p></o:p></span></b></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoNormal" style="mso-list:l9 level1 lfo11"><span style="font-size:12.0pt">Open testoutput.docx in
<b>Microsoft Word</b><o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l9 level1 lfo11"><span style="font-size:12.0pt">Scroll to the section
<b>"Detailed Image Descriptions"</b><o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l9 level1 lfo11"><span style="font-size:12.0pt">Check that
<b>each image has a heading and a generated description</b><o:p></o:p></span></li></ul>
<p class="MsoNormal"><span style="font-size:12.0pt">If you encounter any issues, ensure:<o:p></o:p></span></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoNormal" style="mso-list:l3 level1 lfo12"><span style="font-size:12.0pt">Python and required libraries are installed<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l3 level1 lfo12"><span style="font-size:12.0pt">llm is correctly configured<o:p></o:p></span></li><li class="MsoNormal" style="mso-list:l3 level1 lfo12"><span style="font-size:12.0pt">The
<b>API key</b> is valid and properly set in the script<o:p></o:p></span></li></ul>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">import os<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">import docx<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">import subprocess<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">from PIL import Image<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">from io import BytesIO<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"># Configuration<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">INPUT_DOCX = r"C:\playground\testinput.docx"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">OUTPUT_DOCX = r"C:\playground\testoutput.docx"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">IMAGE_DIR = "extracted_images"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">API_KEY = "<your api key here>”<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">PROMPT = "Describe this image in vivid detail including all colors, objects, and as many details as you can."<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"># Ensure the image directory exists<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">os.makedirs(IMAGE_DIR, exist_ok=True)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"># Load the Word document<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">doc = docx.Document(INPUT_DOCX)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"># Track images found<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">image_index = 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">doc.add_paragraph("Detailed Image Descriptions", style="Heading 2")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"># Process each inline shape (image) in the document<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">for shape in doc.inline_shapes:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> image_index += 1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> image_name = f"image_{image_index}.png"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> image_path = os.path.join(IMAGE_DIR, image_name)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> # Extract image bytes<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> image_data = shape._inline.graphic.graphicData.pic.blipFill.blip.embed<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> image_part = doc.part.rels[image_data].target_part<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> image_bytes = image_part.blob<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> # Save extracted image<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> with open(image_path, "wb") as img_file:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> img_file.write(image_bytes)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> print(f"Processing image: {image_name}")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> # Get description using LLM<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> try:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> result = subprocess.run(<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> ["llm", PROMPT, "-a", image_path, "--key", API_KEY],<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> capture_output=True, text=True, check=True<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> )<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> description = result.stdout.strip()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> except subprocess.CalledProcessError as e:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> description = f"Error processing image: {e.stderr}"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> # Append description at the end with heading<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> doc.add_paragraph(f"Image {image_index}: {image_name}", style="Heading 3")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> doc.add_paragraph(description)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"> print(f"Added description for {image_name}")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"># Save the updated document<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">doc.save(OUTPUT_DOCX)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">print(f"Processing complete. Descriptions added at the end of {OUTPUT_DOCX}.")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-family:"Calibri",sans-serif">From:</span></b><span style="font-family:"Calibri",sans-serif"> Kelly Ford
<br>
<b>Sent:</b> Saturday, February 1, 2025 4:22 PM<br>
<b>To:</b> enews@toptechtidbits.com; athen-list@u.washington.edu<br>
<b>Cc:</b> Deborah Armstrong <armstrongdeborah@fhda.edu>; athen-list@u.washington.edu<br>
<b>Subject:</b> Re: [Athen] AI tool question<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">There are still possible solutions here, but the last one I would suggest is the automatic alttext generation in office 365. That is far and away, not using any of the newest technology, even that from Microsoft, that’s available to generate
descriptions.<span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal" style="margin-bottom:12.0pt">On Feb 1, 2025, at 4:01<span style="font-family:"Arial",sans-serif"> </span>PM, Top Tech Tidbits via athen-list <athen-list@u.washington.edu> wrote:<o:p></o:p></p>
</blockquote>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="font-family:"Tahoma",sans-serif"></span> <span style="font-size:12.0pt">
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">I could not agree with you more Debee. While there isn’t yet a widely known tool that fully automates the process of describing all images in a Word document or PDF at once, there are some
promising approaches and partial solutions:</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoNormal" style="mso-list:l4 level1 lfo3"><b><span style="font-size:14.0pt;font-family:Roboto">Microsoft 365’s Accessibility Checker & Alt Text Auto-Generation</span></b><o:p></o:p></li></ol>
<ol style="margin-top:0in" start="1" type="1">
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoNormal" style="mso-list:l4 level2 lfo3"><span style="font-size:14.0pt;font-family:Roboto">Word and PowerPoint in Microsoft 365 have an
<b>automatic alt text generation</b> feature. It can generate descriptions for images, but it requires manual review and editing.</span><o:p></o:p></li><li class="MsoNormal" style="mso-list:l4 level2 lfo3"><span style="font-size:14.0pt;font-family:Roboto">You can run the
<b>Accessibility Checker</b> (Review > Check Accessibility) to find missing alt text and fill in some of it automatically.</span><o:p></o:p></li></ol>
</ol>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<ol style="margin-top:0in" start="2" type="1">
<li class="MsoNormal" style="mso-list:l4 level1 lfo3"><b><span style="font-size:14.0pt;font-family:Roboto">Adobe Acrobat Pro (for PDFs)</span></b><o:p></o:p></li></ol>
<ol style="margin-top:0in" start="2" type="1">
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoNormal" style="mso-list:l4 level2 lfo3"><span style="font-size:14.0pt;font-family:Roboto">Acrobat has
<b>"Auto-Tag Document"</b> in its accessibility tools, which sometimes adds descriptions, but they are basic and often need improvement.</span><o:p></o:p></li><li class="MsoNormal" style="mso-list:l4 level2 lfo3"><span style="font-size:14.0pt;font-family:Roboto">You can also extract all images and process them separately with an AI tool.</span><o:p></o:p></li></ol>
</ol>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<ol style="margin-top:0in" start="3" type="1">
<li class="MsoNormal" style="mso-list:l4 level1 lfo3"><b><span style="font-size:14.0pt;font-family:Roboto">Seeing AI & Lookout (for scanning documents)</span></b><o:p></o:p></li></ol>
<ol style="margin-top:0in" start="3" type="1">
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoNormal" style="mso-list:l4 level2 lfo3"><span style="font-size:14.0pt;font-family:Roboto">If the document is printed or saved as an image-based PDF,
<b>Seeing AI (iOS)</b> and <b>Google Lookout (Android)</b> can scan pages and read out descriptions of images alongside the text.</span><o:p></o:p></li></ol>
</ol>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<ol style="margin-top:0in" start="4" type="1">
<li class="MsoNormal" style="mso-list:l4 level1 lfo3"><b><span style="font-size:14.0pt;font-family:Roboto">Custom AI Workflows (Python + GPT-based models)</span></b><o:p></o:p></li></ol>
<ol style="margin-top:0in" start="4" type="1">
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoNormal" style="mso-list:l4 level2 lfo3"><span style="font-size:14.0pt;font-family:Roboto">If you're open to a more technical approach, you can extract images from a document using
<b>Python (with PyMuPDF or pdf2image for PDFs, or python-docx for Word)</b> and run them through
<b>AI vision models like OpenAI's GPT-4V, Google Vision AI, or Microsoft Azure Computer Vision</b> to generate descriptions automatically.</span><o:p></o:p></li></ol>
</ol>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<ol style="margin-top:0in" start="5" type="1">
<li class="MsoNormal" style="mso-list:l4 level1 lfo3"><b><span style="font-size:14.0pt;font-family:Roboto">Be My Eyes (AI-Powered Virtual Assistant Mode)</span></b><o:p></o:p></li></ol>
<ol style="margin-top:0in" start="5" type="1">
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoNormal" style="mso-list:l4 level2 lfo3"><span style="font-size:14.0pt;font-family:Roboto">The latest AI-powered "Virtual Volunteer" mode in
<b>Be My Eyes</b> (powered by GPT-4V) allows users to upload an entire document with images and get descriptions—though still not fully automated.</span><o:p></o:p></li></ol>
</ol>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Possible Future Solutions</span></b><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto"> </span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">It would be amazing if JAWS, NVDA, or another screen reader implemented a feature where you could just press a button, and it would automatically describe all images in a document in one
go. Hopefully, developers will take note of this need!</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<div>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Aaron Di Blasi,
</span></b><span style="font-size:12.0pt"><a href="https://www.pmi.org/"><b><span style="font-size:14.0pt;font-family:Roboto">PMP</span></b></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto;color:blue"> </span></b><o:p></o:p></p>
<p class="MsoNormal"><a href="https://www.linkedin.com/in/aarondiblasi/"><b><span style="font-size:14.0pt;font-family:Roboto;color:windowtext;text-decoration:none"><o:p></o:p></span></b></a></p>
<div>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto"><a href="https://www.linkedin.com/in/aarondiblasi/"><span style="color:windowtext;text-decoration:none"><image001.png></span><span style="font-size:11.0pt;font-family:"Aptos",sans-serif;color:windowtext;font-weight:normal;text-decoration:none"><o:p></o:p></span></a></span></b></p>
</div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<p class="MsoNormal"><i><span style="font-size:14.0pt;font-family:Roboto">“The greatest barrier to accessibility is indifference.”</span></i><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:14.0pt;font-family:"Segoe UI Emoji",sans-serif">💡</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">PR Director (2024-Present)</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">AT-Newswire</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">Access Technology's Digital Newswire</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><a href="https://at-newswire.com"><span style="font-size:14.0pt;font-family:Roboto">https://at-newswire.com</span></a></span><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:14.0pt;font-family:"Segoe UI Emoji",sans-serif">🌐</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">Publisher (2024-Present)</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">AI-Weekly</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">The Week's News in Artificial Intelligence</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><a href="https://ai-weekly.ai/"><span style="font-size:14.0pt;font-family:Roboto">https://ai-weekly.ai</span></a></span><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:14.0pt;font-family:"Segoe UI Emoji",sans-serif">🌐</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto"> </span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">Publisher (2022-Present)</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Access Information News
</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">The Week's News in Access Information</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><a href="https://accessinformationnews.com"><span style="font-size:14.0pt;font-family:Roboto">https://accessinformationnews.com</span></a></span><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:14.0pt;font-family:"Segoe UI Emoji",sans-serif">🌐</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">Publisher (2020-Present)</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Top Tech Tidbits</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">The Week's News in Access Technology</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><a href="https://toptechtidbits.com/"><span style="font-size:14.0pt;font-family:Roboto">https://toptechtidbits.com</span></a></span><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:14.0pt;font-family:"Segoe UI Emoji",sans-serif">🌐</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto">Sr. Project Management Professional (2006-Present)</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Mind Vault Solutions, Ltd.</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><a href="https://mvsltd.com/"><span style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com</span></a></span><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:14.0pt;font-family:"Segoe UI Emoji",sans-serif">🌐</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto"> </span></b><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><b><span style="font-size:14.0pt;font-family:Roboto;color:black;border:none windowtext 1.0pt;padding:0in">Certified:</span></b><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><span style="font-size:14.0pt;font-family:Roboto;color:black">Digital Marketing Associate,
</span><span style="font-size:12.0pt;font-family:"Times New Roman",serif;color:black"><a href="https://mvsltd.com/news/aaron-di-blasi-pmp-mind-vault-solutions-ltd-awarded-digital-marketing-associate-certification-by-meta/" target="_blank"><span style="font-size:14.0pt;font-family:Roboto;border:none windowtext 1.0pt;padding:0in">Meta
Certified</span></a></span><span style="font-size:14.0pt;font-family:Roboto;color:black"> (2022 - Present)</span><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><span style="font-size:14.0pt;font-family:Roboto;color:black">Social Marketing Professional,
</span><span style="font-size:12.0pt;font-family:"Times New Roman",serif;color:black"><a href="https://mvsltd.com/news/aaron-di-blasi-pmp-mind-vault-solutions-ltd-awarded-social-media-marketing-certification-by-hootsuite-world-leader-in-social-media-marketing-solutions/" target="_blank"><span style="font-size:14.0pt;font-family:Roboto;border:none windowtext 1.0pt;padding:0in">Hootsuite
Certified</span></a></span><span style="font-size:14.0pt;font-family:Roboto;color:black"> (2020 - Present)</span><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><span style="font-size:14.0pt;font-family:Roboto;color:black">Email Marketing Professional,
</span><span style="font-size:12.0pt;font-family:"Times New Roman",serif;color:black"><a href="https://mvsltd.com/news/aaron-di-blasi-pmp-mind-vault-solutions-ltd-named-a-constant-contact-certified-solution-provider/" target="_blank"><span style="font-size:14.0pt;font-family:Roboto;border:none windowtext 1.0pt;padding:0in">Constant
Contact Certified</span></a></span><span style="font-size:14.0pt;font-family:Roboto;color:black"> (2019 - Present)</span><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><span style="font-size:14.0pt;font-family:Roboto;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><b><span style="font-size:14.0pt;font-family:Roboto;color:black;border:none windowtext 1.0pt;padding:0in">Specializing in:</span></b><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><span style="font-size:14.0pt;font-family:Roboto;color:black">Digital Strategy and Content Marketing</span><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><span style="font-size:14.0pt;font-family:Roboto;color:black">Social Media Advertising</span><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><span style="font-size:14.0pt;font-family:Roboto;color:black">Online Fundraising</span><o:p></o:p></p>
<p class="MsoNormal" style="line-height:16.8pt;background:white"><span style="font-size:12.0pt;font-family:"Times New Roman",serif;color:black"><a href="https://www.ada.gov/" target="_blank"><span style="font-size:14.0pt;font-family:Roboto;border:none windowtext 1.0pt;padding:0in">ADA</span></a></span><span style="font-size:14.0pt;font-family:Roboto;color:black">, </span><span style="font-size:12.0pt;font-family:"Times New Roman",serif;color:black"><a href="https://www.w3.org/WAI/standards-guidelines/wcag/" target="_blank"><span style="font-size:14.0pt;font-family:Roboto;border:none windowtext 1.0pt;padding:0in">WCAG</span></a></span><span style="font-size:14.0pt;font-family:Roboto;color:blue"> </span><span style="font-size:14.0pt;font-family:Roboto;color:black">and </span><span style="font-size:12.0pt;font-family:"Times New Roman",serif;color:black"><a href="https://www.justice.gov/crt/section-508-home-page-1" target="_blank"><span style="font-size:14.0pt;font-family:Roboto;border:none windowtext 1.0pt;padding:0in">Section
508 Compliance</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto"> </span></b><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Website:
</span></b><span style="font-size:12.0pt"><a href="https://mvsltd.com"><span style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com</span></a></span><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:14.0pt;font-family:"Segoe UI Emoji",sans-serif">🌐</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Email:</span></b><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="mailto:ad@mvsltd.com"><span style="font-size:14.0pt;font-family:Roboto">ad@mvsltd.com</span></a></span><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:14.0pt;font-family:"Segoe UI Emoji",sans-serif">📧</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Toll Free:</span></b><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="tel:+18555786660"><span style="font-size:14.0pt;font-family:Roboto">+1 (855) 578-6660</span></a></span><span style="font-size:14.0pt;font-family:"Segoe UI Emoji",sans-serif">📱️</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Schedule A Meeting:
</span></b><span style="font-size:12.0pt"><a href="https://calendly.com/aarondiblasi"><span style="font-size:14.0pt;font-family:Roboto">https://calendly.com/aarondiblasi</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">News:</span></b><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="https://mvsltd.com/news"><span style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com/news</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Services:</span></b><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="https://mvsltd.com/services"><span style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com/services</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Testimonials:</span></b><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="https://mvsltd.com/testimonials"><span style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com/testimonials</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Facebook:</span></b><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="https://mvsltd.com/facebook"><span style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com/facebook</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">X (Formerly Twitter):</span></b><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="https://mvsltd.com/x"><span style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com/x</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">LinkedIn:</span></b><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="https://mvsltd.com/linkedin"><span style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com/linkedin</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Roboto">Instagram:</span></b><span style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="https://mvsltd.com/instagram"><span style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com/instagram</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span lang="PT-BR" style="font-size:14.0pt;font-family:Roboto">YouTube:</span></b><span lang="PT-BR" style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="https://mvsltd.com/youtube"><span lang="PT-BR" style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com/youtube</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><b><span lang="PT-BR" style="font-size:14.0pt;font-family:Roboto">Google:</span></b><span lang="PT-BR" style="font-size:14.0pt;font-family:Roboto">
</span><span style="font-size:12.0pt"><a href="https://mvsltd.com/google"><span lang="PT-BR" style="font-size:14.0pt;font-family:Roboto">https://mvsltd.com/google</span></a></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"><br>
<b>CONFIDENTIALITY NOTICE:</b> This e-mail and attachments, if any, may contain confidential information, which is privileged and protected from disclosure by Federal and State confidentiality laws, rules, and regulations. This e-mail and attachments, if any,
are intended for the designated addressee only. If you are not the designated addressee, you are hereby notified that any disclosure, copying, or distribution of this e-mail and its attachments, if any, may be unlawful and may subject you to legal consequences.
If you have received this e-mail and attachments in error, please delete the e-mail and its attachments from your computer.</span><o:p></o:p></p>
</div>
<p class="MsoNormal"><span style="font-size:14.0pt;font-family:Roboto"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-family:"Calibri",sans-serif">From:</span></b><span style="font-family:"Calibri",sans-serif"> athen-list <athen-list-bounces@mailman12.u.washington.edu>
<b>On Behalf Of </b>Deborah Armstrong via athen-list<br>
<b>Sent:</b> Saturday, February 1, 2025 5:04 PM<br>
<b>To:</b> Access Technology Higher Education Network <athen-list@u.washington.edu><br>
<b>Subject:</b> [Athen] AI tool question</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Has anyone found a tool that will automatically describe all pictures in a word document or PDF, such as a class handout, a slide ceck or a textbook chapter?<o:p></o:p></p>
<p class="MsoNormal">I know JAWS has a great picture smart AI feature that lets you locate a graphic on a web page or in a document and have it thoroughly described, but the user has to locate the picture, focus on it, and hit the right keystrokes.<o:p></o:p></p>
<p class="MsoNormal">And users of other screen readers can download the free Be My Eyes app for Windows to do the same thing.<o:p></o:p></p>
<p class="MsoNormal">A variety of iPhone and Android apps also describe pictures and scenes for the visually impaired including Seeing AI, Lookout, Speak-A-Boo, Focus Assist and and Be My Eyes. And of course the Meta smart glasses are super for this as well
if properly prompted. <o:p></o:p></p>
<p class="MsoNormal">But I know of no tool that has automated this for an entire document.<o:p></o:p></p>
<p class="MsoNormal">It would be so cool if such a tool existed.<o:p></o:p></p>
<p class="MsoNormal">--Debee<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt">_______________________________________________<br>
athen-list mailing list<br>
athen-list@mailman12.u.washington.edu<br>
http://mailman12.u.washington.edu/mailman/listinfo/athen-list<o:p></o:p></span></p>
</div>
</blockquote>
</div>
</body>
</html>