pyconverters-openai_vision 0.5.36__tar.gz → 0.5.40__tar.gz
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.
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/PKG-INFO +1 -1
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/pyconverters_openai_vision/__init__.py +1 -1
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/pyconverters_openai_vision/openai_vision.py +9 -13
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/setup.py +1 -1
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/data/ENG product fact files_general offer_2025_30pages_alts.json +20 -20
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/test_openai_vision.py +18 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/.dockerignore +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/.gitignore +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/Dockerfile +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/Jenkinsfile +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/README.md +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/bumpversion.py +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/pyconverters_openai_vision/openai_utils.py +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/pyproject.toml +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/__init__.py +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/data/ENG product fact files_general offer_2025_30pages.json +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/data/ENG product fact files_general offer_2025_30pages_descs.json +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/data/PC_Kairntech_LLM_v1.md.json +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/data/colducoq.jpg +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/data/webinar.png +0 -0
- {pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tox.ini +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""OpenAIVision converter"""
|
|
2
|
-
__version__ = "0.5.
|
|
2
|
+
__version__ = "0.5.40"
|
|
@@ -147,10 +147,6 @@ class OpenAIVisionConverterBase(ConverterBase):
|
|
|
147
147
|
PREFIX: str = ""
|
|
148
148
|
oauth_token: OAuthToken = OAuthToken()
|
|
149
149
|
|
|
150
|
-
@classmethod
|
|
151
|
-
def is_model_gpt_5_model(cls, model: str) -> bool:
|
|
152
|
-
return "gpt-5" in model
|
|
153
|
-
|
|
154
150
|
def compute_args(self, params: OpenAIVisionBaseParameters, source: UploadFile, kind
|
|
155
151
|
) -> Dict[str, Any]:
|
|
156
152
|
data = source.file.read()
|
|
@@ -171,11 +167,10 @@ class OpenAIVisionConverterBase(ConverterBase):
|
|
|
171
167
|
},
|
|
172
168
|
binary_block
|
|
173
169
|
]})
|
|
174
|
-
max_tokens_param = 'max_completion_tokens' if self.is_model_gpt_5_model(params.model_str) else 'max_tokens'
|
|
175
170
|
kwargs = {
|
|
176
171
|
'model': params.model_str,
|
|
177
172
|
'messages': messages,
|
|
178
|
-
|
|
173
|
+
'max_tokens': params.max_tokens,
|
|
179
174
|
'temperature': params.temperature,
|
|
180
175
|
'top_p': params.top_p,
|
|
181
176
|
'n': params.n,
|
|
@@ -185,7 +180,7 @@ class OpenAIVisionConverterBase(ConverterBase):
|
|
|
185
180
|
return kwargs
|
|
186
181
|
|
|
187
182
|
def compute_result(self, base_url, **kwargs):
|
|
188
|
-
pattern: Pattern = re.compile(r"```(?:markdown
|
|
183
|
+
pattern: Pattern = re.compile(r"```(?:markdown|json|python|html)?(\W.*?)```", re.DOTALL)
|
|
189
184
|
"""Regex pattern to parse the output."""
|
|
190
185
|
response = openai_chat_completion(self.PREFIX, self.oauth_token, base_url, **kwargs)
|
|
191
186
|
contents = []
|
|
@@ -196,6 +191,12 @@ class OpenAIVisionConverterBase(ConverterBase):
|
|
|
196
191
|
action_match = pattern.search(choice.message.content)
|
|
197
192
|
if action_match is not None:
|
|
198
193
|
contents.append(action_match.group(1).strip())
|
|
194
|
+
else:
|
|
195
|
+
action_match = re.search(r"```(.*?)```", choice.message.content, re.DOTALL)
|
|
196
|
+
if action_match is not None:
|
|
197
|
+
contents.append(action_match.group(1).strip())
|
|
198
|
+
else:
|
|
199
|
+
contents.append(choice.message.content)
|
|
199
200
|
else:
|
|
200
201
|
contents.append(choice.message.content)
|
|
201
202
|
if contents:
|
|
@@ -362,10 +363,6 @@ class OpenAIVisionProcessorBase(ProcessorBase):
|
|
|
362
363
|
PREFIX: str = ""
|
|
363
364
|
oauth_token: OAuthToken = OAuthToken()
|
|
364
365
|
|
|
365
|
-
@classmethod
|
|
366
|
-
def is_model_gpt_5_model(cls, model: str) -> bool:
|
|
367
|
-
return "gpt-5" in model
|
|
368
|
-
|
|
369
366
|
def compute_args(self, params: OpenAIVisionProcessorBaseParameters, source: str, kind
|
|
370
367
|
) -> Dict[str, Any]:
|
|
371
368
|
if kind.mime.startswith("image"):
|
|
@@ -384,11 +381,10 @@ class OpenAIVisionProcessorBase(ProcessorBase):
|
|
|
384
381
|
},
|
|
385
382
|
binary_block
|
|
386
383
|
]})
|
|
387
|
-
max_tokens_param = 'max_completion_tokens' if self.is_model_gpt_5_model(params.model_str) else 'max_tokens'
|
|
388
384
|
kwargs = {
|
|
389
385
|
'model': params.model_str,
|
|
390
386
|
'messages': messages,
|
|
391
|
-
|
|
387
|
+
'max_tokens': params.max_tokens,
|
|
392
388
|
'temperature': params.temperature,
|
|
393
389
|
'top_p': params.top_p,
|
|
394
390
|
'n': params.n,
|
|
@@ -48,7 +48,7 @@ entry_points = \
|
|
|
48
48
|
'pyconverters_openai_vision.openai_vision:OpenAIVisionProcessor']}
|
|
49
49
|
|
|
50
50
|
setup(name='pyconverters-openai_vision',
|
|
51
|
-
version='0.5.
|
|
51
|
+
version='0.5.40',
|
|
52
52
|
description='OpenAIVision converter',
|
|
53
53
|
author='Olivier Terrier',
|
|
54
54
|
author_email='olivier.terrier@kairntech.com',
|
|
@@ -132,83 +132,83 @@
|
|
|
132
132
|
"altTexts": [
|
|
133
133
|
{
|
|
134
134
|
"name": "img-0.jpeg",
|
|
135
|
-
"text": "The image features a rhythmic gymnast in mid-performance, showcasing a dynamic pose. The gymnast is wearing a sparkling, intricately designed costume that is predominantly pink and adorned with
|
|
135
|
+
"text": "The image features a rhythmic gymnast in mid-performance, showcasing a dynamic pose. The gymnast is wearing a sparkling, intricately designed costume that is predominantly pink and adorned with shimmering embellishments. The outfit has a fitted bodice and a flared skirt, enhancing the elegance of the movement. \n\nInstead of a head, there is a large, shiny pink ball positioned where the head would typically be, creating a surreal and whimsical effect. The gymnast's arms are gracefully extended, and one leg is lifted, emphasizing the fluidity and grace characteristic of rhythmic gymnastics. The background is a soft, neutral color, which helps to highlight the vibrant colors of the costume and the ball."
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
"name": "img-1.jpeg",
|
|
139
|
-
"text": "The image features a textual layout with a black background at the top displaying the year \"2025\" in large, bold, white font. Below that, in a slightly smaller font, the words \"GENERAL S\" are presented, also in white. The bottom section of the image
|
|
139
|
+
"text": "The image features a textual layout with a black background at the top displaying the year \"2025\" in large, bold, white font. Below that, in a slightly smaller font, the words \"GENERAL S\" are presented, also in white. The bottom section of the image contains the phrase \"PRODUCT FACT FIL\" in a clear, black font against a light blue background. The overall design is clean and modern, emphasizing the year and the product information."
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
"name": "img-2.jpeg",
|
|
143
|
-
"text": "The image presents a pie chart illustrating the distribution of stories published per day, totaling 292 stories (excluding updates). The chart is divided into segments, each representing a different language:\n\n- **Arabic**: 35% (largest segment, colored blue)\n- **English**: 20% (colored
|
|
143
|
+
"text": "The image presents a pie chart illustrating the distribution of stories published per day in various languages, totaling 292 stories (excluding updates). The chart is divided into segments, each representing a different language:\n\n- **Arabic**: 35% (largest segment, colored blue)\n- **English**: 20% (colored red)\n- **Spanish**: 16% (colored purple)\n- **French**: 14% (colored orange)\n- **German**: 10% (colored light blue)\n- **Portuguese**: 5% (smallest segment, colored yellow)\n\nThe chart visually emphasizes the proportion of stories in each language, with Arabic having the highest share. The title and labels are presented in a clear, modern font, enhancing readability."
|
|
144
144
|
},
|
|
145
145
|
{
|
|
146
146
|
"name": "img-3.jpeg",
|
|
147
|
-
"text": "The image is a pie chart
|
|
147
|
+
"text": "The image is a pie chart displaying the distribution of various sports. The largest segment, colored blue, represents \"Football,\" accounting for 57% of the total. Other segments include:\n\n- \"Athletics\" (light blue) at 6%\n- \"Basketball\" (black) at 7%\n- \"Cycling\" (gray) at 3%\n- \"Handball\" (yellow) at 6%\n- \"Motor sports\" (purple) at 6%\n- \"Ski\" (light purple) at 6%\n- \"Tennis\" (green) at 5%\n- \"Olympics\" (orange) at 2%\n\nEach segment is labeled with its corresponding percentage, and the chart uses a variety of colors to differentiate between the sports."
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
150
|
"name": "img-4.jpeg",
|
|
151
|
-
"text": "The image presents a
|
|
151
|
+
"text": "The image presents a visual representation of daily reports categorized by sport. On the left side, it states \"30* Reports per day (excluding updates)\" in a prominent font. \n\nTo the right, a pie chart illustrates the distribution of reports among various sports:\n\n- **Football** occupies the largest segment, accounting for **67%** of the reports.\n- **Athletics** follows with **9%**.\n- **Basketball** and **Tennis** each represent **8%** and **7%**, respectively.\n- **Motor sports** and **Olympics** each contribute **7%** and **2%** of the total reports.\n\nEach category is color-coded for clarity, with a legend indicating the corresponding colors for each sport."
|
|
152
152
|
},
|
|
153
153
|
{
|
|
154
154
|
"name": "img-5.jpeg",
|
|
155
|
-
"text": "The image presents a visual representation of the distribution of photos taken per day across various sports. At the top left, it states \"1,490 photos per day\" in bold, emphasizing the total number of photos
|
|
155
|
+
"text": "The image presents a visual representation of the distribution of photos taken per day across various sports. At the top left, it states \"1,490 photos per day\" in bold, emphasizing the total number of photos. \n\nTo the right, there is a pie chart divided into segments, each representing a different sport. The segments are color-coded and labeled as follows:\n\n- **Football** (39% - blue)\n- **Athletics** (22% - orange)\n- **Motor sports** (11% - purple)\n- **Basketball** (7% - black)\n- **Cycling** (9% - red)\n- **Tennis** (4% - light blue)\n- **Cricket** (2% - pink)\n- **Rugby** (3% - green)\n- **Olympics** (3% - light green)\n\nEach segment's size corresponds to the percentage of total photos attributed to that sport, visually illustrating the popularity or frequency of photo capture for each category."
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
158
|
"name": "img-6.jpeg",
|
|
159
|
-
"text": "The image features a
|
|
159
|
+
"text": "The image features a logo with a bright yellow background. The text \"AFP\" is displayed prominently in blue, with the letter \"P\" slightly larger than the others. Next to \"AFP,\" there is a blue circle, followed by the word \"Sports\" in black. The overall design is simple and bold, emphasizing the brand's identity."
|
|
160
160
|
},
|
|
161
161
|
{
|
|
162
162
|
"name": "img-7.jpeg",
|
|
163
|
-
"text": "The image features a pie chart
|
|
163
|
+
"text": "The image features a pie chart illustrating the distribution of infographics created per day in different languages. The chart is divided into five segments, each representing a language:\n\n- **German**: 24% (yellow)\n- **English**: 24% (purple)\n- **Spanish**: 21% (light blue)\n- **French**: 16% (orange)\n- **Portuguese**: 15% (blue)\n\nTo the left of the pie chart, there is a bold statement indicating \"6 Infographics per day,\" emphasizing the average number of infographics produced. The overall design is clean and colorful, making it easy to distinguish between the different language segments."
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
"name": "img-8.jpeg",
|
|
167
|
-
"text": "The image presents a pie chart illustrating the distribution of videographics produced per year, totaling 75. The chart is divided into five segments, each representing a different language:\n\n- **
|
|
167
|
+
"text": "The image presents a pie chart illustrating the distribution of videographics produced per year, totaling 75. The chart is divided into five segments, each representing a different language:\n\n- **Spanish** (blue) occupies the largest portion at 28%.\n- **English** (orange) follows closely with 27%.\n- **Portuguese** (red) accounts for 25%.\n- **French** (yellow) makes up 16%.\n- **German** (light blue) is the smallest segment at 4%.\n\nAbove the pie chart, the text indicates \"75* videographics per year,\" highlighting the total number of videographics produced annually."
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
170
|
"name": "img-9.jpeg",
|
|
171
|
-
"text": "The image features a clean, minimalist design with three sections, each
|
|
171
|
+
"text": "The image features a clean, minimalist design with three sections, each presented on a black background. \n\n1. The first section highlights \"Coverage\" with the text \"24 hours a day, 7 days a week,\" emphasizing continuous availability.\n2. The second section states \"+300* editable videos per month,\" indicating a high volume of video content that can be customized.\n3. The third section mentions \"130 video production points worldwide,\" suggesting a global reach for video production services.\n\nThe text is presented in a bold, white font, making it easily readable against the dark background."
|
|
172
172
|
},
|
|
173
173
|
{
|
|
174
174
|
"name": "img-10.jpeg",
|
|
175
|
-
"text": "The image features a
|
|
175
|
+
"text": "The image features a sleek, modern design with a black background. It presents three key points in white text, each highlighting different aspects of a service or platform. \n\n1. The first section emphasizes \"Coverage\" with the phrases \"24 hours a day\" and \"7 days a week,\" indicating continuous availability.\n2. The second section states \"3 Thematic sections,\" suggesting that the content is organized into three distinct categories.\n3. The final section notes \"+15* articles illustrated per day,\" implying a high volume of visual content produced daily.\n\nThe overall layout is clean and straightforward, making the information easy to read and understand."
|
|
176
176
|
},
|
|
177
177
|
{
|
|
178
178
|
"name": "img-11.jpeg",
|
|
179
|
-
"text": "The image
|
|
179
|
+
"text": "The image is a pie chart divided into eight segments, each representing a different percentage. The segments are colored in various shades: \n\n- The largest segment, colored light blue, occupies 32% of the chart.\n- Next is a yellow segment at 17%.\n- A red segment follows at 14%.\n- The blue segment represents 12%.\n- There are three smaller segments, each at 7%, colored in orange, green, and a light purple.\n- Finally, a segment colored dark purple represents 11%.\n\nEach segment is labeled with its corresponding percentage, providing a clear visual representation of the data distribution."
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
"name": "img-12.jpeg",
|
|
183
|
-
"text": "The image features a sleek, modern design with a black background. It presents four key pieces of information
|
|
183
|
+
"text": "The image features a sleek, modern design with a black background. It presents four key pieces of information in bold, white text. \n\n1. The first section highlights \"Coverage\" with the details \"24 hours a day\" and \"7 days a week,\" emphasizing continuous availability.\n2. The second section states \"5 Thematic sections,\" indicating a structured approach to content organization.\n3. The third section notes \"+ 60* articles illustrated per day,\" suggesting a high volume of content production.\n\nEach section is clearly separated, creating a visually appealing layout that conveys important information efficiently."
|
|
184
184
|
},
|
|
185
185
|
{
|
|
186
186
|
"name": "img-13.jpeg",
|
|
187
|
-
"text": "The image is a pie chart divided into several segments, each representing a
|
|
187
|
+
"text": "The image is a pie chart divided into several segments, each representing a percentage of a whole. The segments are colored differently and labeled with their respective percentages. \n\n- The largest segment, colored blue, occupies 35% of the chart.\n- Next, there are segments in purple (15%), black (9%), and two segments in light blue and gray, each at 10%.\n- Smaller segments include orange (8%), yellow (5%), and two segments in green and another light color, each at 3%.\n\nThe chart visually represents the distribution of data across these categories, with the blue segment being the most prominent."
|
|
188
188
|
},
|
|
189
189
|
{
|
|
190
190
|
"name": "img-14.jpeg",
|
|
191
|
-
"text": "The image features a clean and modern design with
|
|
191
|
+
"text": "The image features a clean and modern design with three distinct sections, each presented on a black background. \n\n1. The first section states \"Coverage\" followed by \"6am to midnight,\" indicating the operational hours.\n2. The second section highlights \"6 Thematic sections,\" suggesting a structured approach to content organization.\n3. The third section notes \"+ 45* articles illustrated per day,\" emphasizing a high volume of daily content production.\n\nThe text is presented in a bold, white font, creating a strong contrast against the black background, making it easy to read. The overall layout is simple yet effective, focusing on key information."
|
|
192
192
|
},
|
|
193
193
|
{
|
|
194
194
|
"name": "img-15.jpeg",
|
|
195
|
-
"text": "The image is a pie chart
|
|
195
|
+
"text": "The image is a pie chart displaying the distribution of various sports. Each segment is color-coded and labeled with a percentage representing its share. \n\n- The largest segment, colored blue, represents Football at 31%.\n- The second largest, in purple, is Athletics at 21%.\n- Following that, the orange segment represents Motor Sports at 17%.\n- The yellow segment indicates the Olympics at 14%.\n- There are smaller segments for Basketball (red) and Cycling (gray), each at 6%.\n- Lastly, Tennis (light blue) occupies the smallest segment at 5%.\n\nThe chart visually conveys the popularity or participation rates of these sports, with Football being the most prominent."
|
|
196
196
|
},
|
|
197
197
|
{
|
|
198
198
|
"name": "img-16.jpeg",
|
|
199
|
-
"text": "The image features
|
|
199
|
+
"text": "The image features three distinct sections, each presented on a black background with white text. \n\n1. The first section states \"Coverage 6am to midnight,\" indicating the time frame of coverage.\n2. The second section highlights \"2 Thematic sections,\" suggesting that the content is organized into two main themes.\n3. The third section mentions \"+ 15* articles illustrated per day,\" implying a daily output of over 15 illustrated articles.\n\nThe overall design is clean and straightforward, focusing on conveying key information effectively."
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
202
|
"name": "img-17.jpeg",
|
|
203
|
-
"text": "The image is a pie chart divided into several segments, each representing a percentage of a whole. The largest segment, colored blue, occupies 62% of the chart.
|
|
203
|
+
"text": "The image is a pie chart divided into several segments, each representing a percentage of a whole. The largest segment, colored blue, occupies 62% of the chart. Next, there is a red segment representing 15%, followed by a purple segment at 12%. Smaller segments include an orange section at 9%, and three tiny segments colored yellow, light blue, and another color, each representing 1%. The percentages are labeled within their respective segments, providing a clear visual representation of the data distribution."
|
|
204
204
|
},
|
|
205
205
|
{
|
|
206
206
|
"name": "img-18.jpeg",
|
|
207
|
-
"text": "The image features a minimalist design with a black background and white text. It presents three key points related to coverage and content:\n\n1. **Coverage**: The text states \"6am to midnight,\" indicating the hours
|
|
207
|
+
"text": "The image features a minimalist design with a black background and white text. It presents three key points related to coverage and content:\n\n1. **Coverage**: The text states \"Coverage 6am to midnight,\" indicating the operational hours.\n2. **Thematic Sections**: The number \"1\" is highlighted, suggesting there is one main thematic section.\n3. **Articles**: The phrase \"+10* articles illustrated per day\" indicates that more than ten articles are illustrated daily.\n\nThe overall layout is clean and straightforward, emphasizing the information clearly."
|
|
208
208
|
},
|
|
209
209
|
{
|
|
210
210
|
"name": "img-19.jpeg",
|
|
211
|
-
"text": "The image is a pie chart
|
|
211
|
+
"text": "The image is a pie chart representing the distribution of various sports. The largest segment, colored blue, accounts for 56% and is labeled as \"Football.\" \n\nOther segments include:\n\n- Orange (12%) for \"Basketball\"\n- Red (11%) for \"Tennis\"\n- Yellow (8%) for \"Motor sports\"\n- Light green (10%) for \"Athletics\"\n- Purple (3%) for \"Olympics\"\n\nEach segment is clearly labeled with its corresponding percentage, providing a visual comparison of the popularity or representation of these sports."
|
|
212
212
|
}
|
|
213
213
|
]
|
|
214
214
|
}
|
{pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/test_openai_vision.py
RENAMED
|
@@ -107,3 +107,21 @@ def test_runpod():
|
|
|
107
107
|
assert len(docs) == 1
|
|
108
108
|
doc0 = docs[0]
|
|
109
109
|
assert 'generative ai' in doc0.text.lower()
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
@pytest.mark.skip(reason="Not a test")
|
|
113
|
+
def test_openai_error():
|
|
114
|
+
converter = OpenAIVisionConverter()
|
|
115
|
+
parameters = OpenAIVisionParameters(prompt='''You are an assistant capable of transforming an image into text in markdown.
|
|
116
|
+
For the image provided, return a text containing:
|
|
117
|
+
objects: [“list of detected objects”],
|
|
118
|
+
visible_text: [“text detected in the image”],
|
|
119
|
+
main_colors: [“list of dominant colors”],
|
|
120
|
+
description: “narrative description of the image”''')
|
|
121
|
+
testdir = Path(__file__).parent
|
|
122
|
+
source = Path(testdir, 'data/ChatGPT Image 12 déc. 2025, 08_57_52.png')
|
|
123
|
+
with source.open("rb") as fin:
|
|
124
|
+
docs: List[Document] = converter.convert(UploadFile(source.name, fin, 'image/png'), parameters)
|
|
125
|
+
assert len(docs) == 1
|
|
126
|
+
doc0 = docs[0]
|
|
127
|
+
assert 'dent de crolles' in doc0.text.lower()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/data/colducoq.jpg
RENAMED
|
File without changes
|
{pyconverters_openai_vision-0.5.36 → pyconverters_openai_vision-0.5.40}/tests/data/webinar.png
RENAMED
|
File without changes
|
|
File without changes
|