- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个项目,我必须从 URL 或 Blob 读取 PDF,并从中提取文本以使用 Azure 认知索引/搜索/我正在使用计算机视觉遵循示例,并且只能从图像中解析和提取文本文件。我环顾四周,发现有人提到了这个功能,但是非常稀疏,我找不到可以找到 PDF 文档的 Github 示例。
关于在哪里查看的任何建议或指示。我知道 Amazon 有 Textetract,但我的客户端是基于 Azure 的,如果可以的话,我真的不想使用 Syncfusion 工具。
所以我尝试了以下方法。验证只是一个扭曲器类,我试图简化对象的返回,
非常感谢您的帮助
using System;
using System;
using System.Collections.Generic;
using System.Text;
using System;
using System.Collections.Generic;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Threading;
using System.Linq;
namespace ConsoleApp1
{
class Program
{
// Uto see blood warning uncomment this url
//// private const string ANALYZE_URL_IMAGE = "https://th.bing.com/th/id/R8d171effb0b5705e35cd71970cdac2db?rik=f1NV8StS9DAgaQ&riu=http%3a%2f%2f4.bp.blogspot.com%2f-T9xYlHTPknQ%2fT2tH6Z6kgPI%2fAAAAAAAAA2k%2fjiC0bzdwZes%2fs1600%2f526054_10100251268413224_34308675_43923934_1717611278_n.jpg&ehk=%2b6xMJU4ck0rkUSqr3VpADdO5MASYJ03WNGMUKGPU1iA%3d&risl=&pid=ImgRaw";
/// <summary>
/// to see very cool party use this url
/// </summary>
private const string ANALYZE_URL_IMAGE = "https://birthdaywisheszone.com/wp-content/uploads/2018/10/how-to-throw-a-bachelor-party.jpeg";
// URL For OCR Test
private const string READ_TEXT_URL_IMAGE = "https://th.bing.com/th/id/OIP.eWqa4Ch11Ie2OcvNPO8IHQHaMi?w=192&h=325&c=7&o=5&pid=1.7"; (if i put a PDF link in here it says multiple bad requests errors (not discriptitve), but with this or any normal picture link it is fine )
public static ImageAnalysis Results1;
static string subscriptionKey = "*********8";
static string endpoint = "*********";
// it gives a description, if its adult, ages of people in the photo, racy or not, it can take a score as well.
/// <summary>
/// just google any photo and past link
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{// Create a client
ComputerVisionClient client = Authenticate(endpoint, subscriptionKey);
// Analyze an image to get features and other properties.
AnalyzeImageUrl(client, ANALYZE_URL_IMAGE).Wait();
// Extract text (OCR) from a URL image using the Read API
//ReadFileUrl(client, READ_TEXT_URL_IMAGE).Wait();
var Image = DetectImageObject(Results1);
var Faces = DetectFacesInImage(Results1);
var Adult = DetectAdultImages(Results1);
var Brands = DetectBrandsObject(Results1);
var Gore = DetectGoreImages(Results1);
var Racy = DetectRacyImages(Results1);
if(Image.isImage == true)
{
Console.WriteLine("this is the Description of the Image");
foreach(var i in Image.Description)
{
Console.WriteLine(i.Text);
}
}
if (Faces.isFaces == true)
{
Console.WriteLine("There are Adults in this Photos");
foreach (var i in Faces.FaceDescriptions)
{
Console.WriteLine(i.Age + " who is " + i.Gender );
}
}
if (Adult.isAdult == true)
{
Console.WriteLine("There are Adults in this Photos");
foreach (var i in Adult.Description)
{
Console.WriteLine(i.Text);
}
}
if (Brands.isBrands == true)
{
Console.WriteLine("There are Brands in this Photos");
foreach (var i in Brands.ListOFBrands)
{
Console.WriteLine(i.Name);
}
}
if (Gore.isGore == true)
{
Console.WriteLine("######################## Blood in PHOTO ###########");
}
if (Racy.isRacy == true)
{
Console.WriteLine("######################## racy in photos ###########");
}
Console.WriteLine("text paper");
ReadFileUrl(client, READ_TEXT_URL_IMAGE).Wait();
}
/*
* AUTHENTICATE
* Creates a Computer Vision client used by each example.
*/
public static ComputerVisionClient Authenticate(string endpoint, string key)
{
ComputerVisionClient client =
new ComputerVisionClient(new ApiKeyServiceClientCredentials(key))
{ Endpoint = endpoint };
return client;
}
/*
* ANALYZE IMAGE - URL IMAGE
* Analyze URL image. Extracts captions, categories, tags, objects, faces, racy/adult content,
* brands, celebrities, landmarks, color scheme, and image types.
*/
public static async Task AnalyzeImageUrl(ComputerVisionClient client, string imageUrl)
{
Console.WriteLine("----------------------------------------------------------");
Console.WriteLine("ANALYZE IMAGE - URL");
Console.WriteLine();
// Creating a list that defines the features to be extracted from the image.
List<VisualFeatureTypes?> features = new List<VisualFeatureTypes?>()
{
VisualFeatureTypes.Categories, VisualFeatureTypes.Description,
VisualFeatureTypes.Faces, VisualFeatureTypes.ImageType,
VisualFeatureTypes.Tags, VisualFeatureTypes.Adult,
VisualFeatureTypes.Color, VisualFeatureTypes.Brands,
VisualFeatureTypes.Objects,
};
Console.WriteLine($"Analyzing the image {Path.GetFileName(imageUrl)}...");
Console.WriteLine();
// Analyze the URL image
ImageAnalysis Results = await client.AnalyzeImageAsync(imageUrl, features);
Results1 = Results;
}
public static ValuationResults DetectImageObject(ImageAnalysis Results)
{
ValuationResults valuation = new ValuationResults();
if (Results.Description.Captions.Count > 0)
{
valuation.isImage = true;
valuation.Description = Results.Description.Captions.ToList();
}
return valuation;
}
public static ValuationResults DetectBrandsObject(ImageAnalysis Results)
{
ValuationResults valuation = new ValuationResults();
if(Results.Brands.Count > 0)
{
valuation.isBrands = true;
valuation.ListOFBrands = Results.Brands.ToList();
}
return valuation;
}
public static ValuationResults DetectFacesInImage(ImageAnalysis Results)
{
ValuationResults valuation = new ValuationResults();
if (Results.Faces.Count > 0)
{
valuation.isFaces = true;
valuation.isFacesCount = Results.Faces.Count;
valuation.FaceDescriptions = Results.Faces.ToList();
foreach (var face in Results.Faces)
{
Console.WriteLine($"A {face.Gender} of age {face.Age} at location {face.FaceRectangle.Left}, " +
$"{face.FaceRectangle.Left}, {face.FaceRectangle.Top + face.FaceRectangle.Width}, " +
$"{face.FaceRectangle.Top + face.FaceRectangle.Height}");
}
}
else
{
}
return valuation;
}
public static ValuationResults DetectAdultImages(ImageAnalysis results)
{
// Adult or racy content, if any.
ValuationResults valuation = new ValuationResults();
if (results.Adult.IsAdultContent)
{
valuation.isAdult = true;
valuation.isAdultScore = results.Adult.AdultScore;
}
else
{
valuation.isAdult = false;
valuation.isAdultScore = results.Adult.AdultScore;
}
return valuation;
}
public static ValuationResults DetectRacyImages(ImageAnalysis results)
{
// Adult or racy content, if any.
ValuationResults valuation = new ValuationResults();
if (results.Adult.IsRacyContent)
{
valuation.isRacy = true;
}
else
{
}
return valuation;
}
public static ValuationResults DetectGoreImages(ImageAnalysis results)
{
// Adult or racy content, if any.
ValuationResults valuation = new ValuationResults();
if (results.Adult.IsGoryContent)
{
valuation.isGore = true;
valuation.isGoreScore = results.Adult.GoreScore;
}
else
{
valuation.isGore = false;
valuation.isGoreScore = results.Adult.GoreScore;
}
return valuation;
}
public static async Task ReadFileUrl(ComputerVisionClient client, string urlFile)
{
Console.WriteLine("----------------------------------------------------------");
Console.WriteLine("READ FILE FROM URL");
Console.WriteLine();
// Read text from URL
var textHeaders = await client.ReadAsync(urlFile, language: "en");
// After the request, get the operation location (operation ID)
string operationLocation = textHeaders.OperationLocation;
Thread.Sleep(2000);
// Retrieve the URI where the extracted text will be stored from the Operation-Location header.
// We only need the ID and not the full URL
const int numberOfCharsInOperationId = 36;
string operationId = operationLocation.Substring(operationLocation.Length - numberOfCharsInOperationId);
// Extract the text
ReadOperationResult results;
Console.WriteLine($"Extracting text from URL file {Path.GetFileName(urlFile)}...");
Console.WriteLine();
do
{
results = await client.GetReadResultAsync(Guid.Parse(operationId));
}
while ((results.Status == OperationStatusCodes.Running ||
results.Status == OperationStatusCodes.NotStarted));
// Display the found text.
Console.WriteLine();
var textUrlFileResults = results.AnalyzeResult.ReadResults;
foreach (ReadResult page in textUrlFileResults)
{
foreach (Line line in page.Lines)
{
Console.WriteLine(line.Text);
}
}
Console.WriteLine();
}
}
}
最佳答案
计算机视觉 Read API是 Azure 最新的 OCR 技术,可处理大图像和多页文档作为输入,并提取荷兰语、英语、法语、德语、意大利语、葡萄牙语和西类牙语的打印文本。它还支持对图像和多页 PDF 文档中的英文、数字和货币符号进行手写 OCR。它经过优化,可从文本较多的图像和混合语言的多页 PDF 文档中提取文本。它支持检测同一图像或文档中的打印和手写文本(仅限英文)。
这是doc用于计算机视觉的发布更新。
关于用于从 PDF 中读取文本的 Azure OCR 或其他 Azure 认知功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66211445/
表架构 DROP TABLE bla; CREATE TABLE bla (id INTEGER, city INTEGER, year_ INTEGER, month_ INTEGER, val I
我需要拆分字符串/或从具有以下结构的字符串中获取更容易的子字符串。 字符串将来自 window.location.pathname 或 window.location.href,看起来像 text/n
每当将对象添加到数组中时,我都会尝试更新 TextView ,并在 TextView 中显示该文本,如下所示: "object 1" "object 2" 问题是,每次将新对象添加到数组时,它都会覆盖
我目前正在寻找使用 Java 读取网站可见文本并将其存储为纯文本字符串的方法。 换句话说,我想转换成这样: Hello stupid World进入“ Hello World ” 或者类似的东西 Un
我正在尝试以文本和 HTML 格式发送电子邮件,但无法正确发送正确的 header 。特别是,我想设置 Content-Type header ,但我找不到如何为 html 和文本部分单独设置它。 这
我尝试了上面的代码,但我无法绑定(bind)文本,我怎样才能将资源内部文本 bloc
我刚刚完成了 Space Shooter 教程,由于没有 GUIText 对象,所以我创建了 UI.Text 对象并进行了相应的编码。它在统一播放器中有效,但在构建 Web 应用程序后无效。我花了一段
我有这个代码: - (IBAction)setButtonPressed:(id)sender { NSUserDefaults *sharedDefaults = [[NSUserDefau
抱歉标题含糊不清,但我想不出我想在标题中做什么。无论如何,对于图像上的文本,我使用了 JLabel 文本并将其添加到图标中。 JLabel icon = new JLabel(new Imag
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我在将 Twitter 嵌入到我从 HTML 5 转换的 wordpress 运行网站时遇到问题。 我遇到的问题是推文不是我的自定义字体... 这是我无法使用任何 css 定位的 HTML 代码,我正
我正在尝试找到解决由于使用以下形式的代码而导致的冗余字符串连接问题的最佳方法: logger.debug("Entering loop, arg is: " + arg) // @1 在大多数情况下,
我写了这个测试 @Test public void removeRequestTextFromRouteError() throws Exception { String input = "F
我目前正在创建一个正则表达式来拆分所有匹配以下格式的字符串:&[文本],并且需要获取文本。字符串可能类似于:something &[text] &[text] everything &[text] 等
有没有办法将标题文本从一个词变形为另一个词,同时保留两个词中使用的字母?我看过的许多 css 文本动画大多是视觉的,很少有旋转整个单词的。 我想要做的是从一个词过渡,例如“BEACH”到“CHANGE
总结matplotlib绘图如何设置坐标轴刻度大小和刻度。 上代码: ?
我在容器 (1) 中创建了容器 (2)。你能帮忙如何向容器(1)添加文本吗?下面是我的代码 return Scaffold( body: Padding( padding: c
我似乎找不到任何人或任何人这样做过。我试图限制我们使用的图像数量,并想创建一个带有渐变作为其“颜色”的文本,并在其周围设置渐变轮廓/描边 到目前为止,我还没有看到任何将两者结合在一起的东西。 我可以自
我正在为视频游戏暗黑破坏神 2 使用 discord.py 构建一个不和谐机器人。其中一项功能要求机器人从暗黑破坏神 2 屏幕截图中提取项目的名称和属性。我目前正在为此使用 pytesseract,但
我很难弄清楚如何旋转 strip.text theme 中的属性来自 ggplot2 .我使用的是 R 版本 3.4.2 和 ggplot2 版本 2.2.1。 以下是 MWE 的数据。 > dput
我是一名优秀的程序员,十分优秀!