tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Microsoft Office Document Imagingを使ってみました
投稿日: 2008/03/17(Mon) 17:07
投稿者ひでと
質問ではないです。Microsoft Office Document Imagingを使って、
イメージファイルファイルから数字を取り出す処理を作ってみました。
一応載せておきますが、素人ですのでご指摘いただければと思います。
二つに分けておきます

    Structure st_scWord
        Dim text As String
        Dim left As Integer
        Dim right As Integer
        Dim top As Integer
        Dim bottom As Integer
    End Structure
    Dim scWords As New List(Of st_scWord)
    Dim ScNums As New List(Of st_scWord)
    Dim ScSchrs As New List(Of st_scWord)
    Dim NScNums As New List(Of st_scWord)
    Sub GetOCR(ByVal FileName As String)
        Dim myDoc As MODI.Document
        Dim myImage As MODI.Image
        Dim myLayout As MODI.ILayout
        Dim myWords As MODI.IWords
        Dim myWord As MODI.IWord
        Dim myRects As MODI.MiRects
        Dim myRect As MODI.MiRect

        Dim i As Integer
        Dim scWord As st_scWord
        myDoc = New MODI.Document
        myDoc.Create(FileName)

        myDoc.OCR()
        myImage = myDoc.Images(0)
        myLayout = myImage.Layout
        myWords = myLayout.Words
        For i = 0 To myWords.Count - 1
            myWord = myWords(i)
            scWord.text = myWord.Text
            myRects = myWord.Rects
            myRect = myRects(0)
            scWord.left = myRect.Left
            scWord.right = myRect.Right
            scWord.top = myRect.Top
            scWord.bottom = myRect.Bottom
            scWords.Add(scWord)
        Next
    End Sub
    Private Function minScWLeft() As Integer
        Dim i As Integer
        Dim dum As Integer
        dum = scWords(0).left
        For i = 0 To scWords.Count - 1
            If dum > scWords(i).left Then dum = scWords(i).left
        Next
        Return dum
    End Function
    Private Function maxScWRight() As Integer
        Dim i As Integer
        Dim dum As Integer
        dum = scWords(0).right
        For i = 0 To scWords.Count - 1
            If dum < scWords(i).right Then dum = scWords(i).right
        Next
        Return dum
    End Function
    Private Function minScWTop() As Integer
        Dim i As Integer
        Dim dum As Integer
        dum = scWords(0).top
        For i = 0 To scWords.Count - 1
            If dum > scWords(i).top Then dum = scWords(i).top
        Next
        Return dum
    End Function
    Private Function maxScWBottom() As Integer
        Dim i As Integer
        Dim dum As Integer
        dum = scWords(0).bottom
        For i = 0 To scWords.Count - 1
            If dum < scWords(i).bottom Then dum = scWords(i).bottom
        Next
        Return dum
    End Function
    Private Function ScwWidth() As Integer
        Dim dum As Integer
        dum = maxScWRight() - minScWLeft()
        Return dum
    End Function
    Private Function ScwHeight() As Integer
        Dim dum As Integer
        dum = maxScWBottom() - minScWTop()
        Return dum
    End Function
    Private Function ScwScale(ByVal Obj As PictureBox) As Single
        Dim dum As Single
        dum = Obj.Width / ScwWidth()
        Return dum
    End Function

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。