Skip to content

Commit b0a27ee

Browse files
committed
feat: add document parsing sample
1 parent 363d14f commit b0a27ee

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
<None Update="table.jpg">
4242
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
4343
</None>
44+
<None Update="scanned.jpg">
45+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
46+
</None>
4447
</ItemGroup>
4548

4649
<ItemGroup>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using Cnblogs.DashScope.Core;
2+
3+
namespace Cnblogs.DashScope.Sample.Multimodal;
4+
5+
public class OcrDocumentToLaTeXSample : ISample
6+
{
7+
/// <inheritdoc />
8+
public string Description => "OCR parsing scanned document to LaTeX sample";
9+
10+
/// <inheritdoc />
11+
public async Task RunAsync(IDashScopeClient client)
12+
{
13+
// upload file
14+
await using var file = File.OpenRead("scanned.jpg");
15+
var ossLink = await client.UploadTemporaryFileAsync("qwen-vl-ocr-latest", file, "scanned.jpg");
16+
Console.WriteLine($"File uploaded: {ossLink}");
17+
var messages =
18+
new List<MultimodalMessage> { MultimodalMessage.User([MultimodalMessageContent.ImageContent(ossLink)]) };
19+
var completion = await client.GetMultimodalGenerationAsync(
20+
new ModelRequest<MultimodalInput, IMultimodalParameters>()
21+
{
22+
Model = "qwen-vl-ocr-latest",
23+
Input = new MultimodalInput { Messages = messages },
24+
Parameters = new MultimodalParameters()
25+
{
26+
OcrOptions = new MultimodalOcrOptions()
27+
{
28+
Task = "document_parsing",
29+
}
30+
}
31+
});
32+
33+
Console.WriteLine("LaTeX:");
34+
Console.WriteLine(completion.Output.Choices[0].Message.Content[0].Text);
35+
36+
if (completion.Usage != null)
37+
{
38+
var usage = completion.Usage;
39+
Console.WriteLine(
40+
$"Usage: in({usage.InputTokens})/out({usage.OutputTokens})/image({usage.ImageTokens})/total({usage.TotalTokens})");
41+
}
42+
}
43+
}
499 KB
Loading

0 commit comments

Comments
 (0)