掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 31466|回复: 45

[索引] 词库制作中可能有用的软件、技术整理[201710919]

  [复制链接]

该用户从未签到

发表于 2013-8-25 10:34:14 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-9-19 15:42 编辑 2 M9 f  ^3 |$ L& F0 R2 z
' s) E( E: t7 G& z6 ?" |

* |, b# o9 `& L! sFAQ
4 z/ c/ C6 T% `: N2 A4 ~! A4 v>>  未加密的 mdx 如何转为txt?: u) {& F; v, j4 b
工具①,GetDict.exe by yhssdl。下载地址:
, U9 {8 k3 ~3 j" ]http://pan.baidu.com/share/link? ... 67&uk=305151372, l4 D) {* S9 V
8 x3 }& O0 V" i
>>
) m! D" k9 C( }9 t" y. z8 I[实例][解压mdx/mdd再打包为mdx/mdd][乱][多图]  https://www.pdawiki.com/forum/fo ... hread&tid=13388" `' U) c$ ?/ G
1 x% h9 M+ ^* k! ]4 P5 B7 F

6 a. X) o+ ~" [+ s' ~老马的原创空间 http://www.cnblogs.com/stronghorse/, y' _( g7 H* H5 \" Z' f% M
; H$ u. J" {2 a* n
3 Z6 r8 N( M5 F+ F4 z, u( Y! E# d
bgl-> txt https://www.pdawiki.com/forum/fo ... &fromuid=147948
; |: I1 @6 b7 x% ~& D4 n& K
! w& V* A8 N9 o" [' n$ u2 k% B. ]# M. M2 K( j" J. k

% f+ r$ _, T) S, W, d5 N+ M; r5 V0 _9 }7 B# e9 C' K) H5 k

: x! ^' A4 O+ Q" `3 T/ _* i( f( x* w  J* @0 h8 `5 ?  n3 s
整理中,欢迎补充/ V0 `, j1 W2 }0 \
mdx制作非常简单,但是要获取源文件,或把词典做得很漂亮有的时候是需要下一番功夫的。. D' C& j% D2 Y- s+ r$ h
正则表达式Regular Expression, html, xml, div+css,
3 j/ u/ P% m) [2 U: P8 N1 G编码,尤其是汉字编码的一些知识,神马UTF, GBK, unicode。。。{:10_300:} / Z9 W) a( J6 s+ c2 P# k
程序设计语言:
7 X1 J6 A  R' X/ v6 wPython;C++;: ~9 S0 p, y( e
Perl
$ q' c) e" y. I- k4 f9 y2 G; vJavaScript : http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp5 k0 _/ U0 w* u: D5 r
VBS/VBA( n( G8 d6 T: }) {: ^; b, y
http://www31.ocn.ne.jp/~h_ishida/scripts.html! N- M5 r% G, t" J7 v
数据库软件:, G% V1 E. A& w: K8 m
Navicat Premium
% C  b& B7 q$ h; DSQLiteSpy,PowerBuilder
' ]  P0 D9 p4 s/ Z( p& `SQLite Expert Professional/ c* W7 `* U1 s' B8 L
软件:) R2 t: w% W0 D8 i
MDict,MdxBuilder: http://www.octopus-studio.com/download.cn.htm# s# }* r1 {; u3 T: F% c  w  D

/ T4 m9 c7 W, f+ n! a5 k文本编辑器类:Notepad, Notepad++, EmEditor, UltraEdit, EditPlus,
: V4 \5 p0 l/ x0 [9 [" E9 S* o$ q; `Replace Pioneer http://zhidao.baidu.com/link?url ... KEcUNfmzOo7nLH8BSNq
: C, y+ b  ^9 T# U9 _- LRaptor 3 http://softfie.com/software/hacktool-raptor.html! V6 m$ @+ C; o% r) t& c0 N! M" T
awk 4 Windows :http://sourceforge.net/projects/ ... -1-bin.zip/download
/ s) p% ?: v, z& f- {! ?) Q0 M2 ]4 z/ e, z" n3 V  ?3 G
Microft Office:Word, Excel, Access/ Z! Z9 d/ f5 j7 |. M  X
Adobe: Adobe Director (某些光盘是用Macromedia软件做的,用这个可以提取语音),Adobe Acrobat Pro2 b( B- `' ~" D7 T% e+ g# l9 s
OCR:ABBYY FineReader
! ]2 u" p$ A$ u, I; uDWS: Tlex
4 V  m4 O: C& s# }浏览器:Firefox, Chrome$ {6 [' g* M5 N

' a2 i/ C8 z$ ?' c/ q. ]解压缩软件' J! K8 F7 o( [* [4 u% r- u
# Y1 U3 n2 l0 S6 n1 y; k
. ^/ A) M$ m& J% C, O& ?0 b
离线下载类:2 T# U& u; ^! N; Q  c
wget, Teleport Pro, OfflineExplorer
; d; i7 J$ k( n% E- W; F4 {其他4 H( ^# K1 R' y* D
Fiddler 2,
0 V! l, v! x; \2 ZSQLiteSpy- |) _* X5 Q) n
yhssdl的GetDict2.6
( a- N! v5 _. _( A0 o* ]6 e" \AudioTranscoder; {# A) S$ H4 }+ @5 R
按键精灵
+ U; e: R5 w* T( x; |Tvangeste / dictzip-win32
7 M1 W1 y0 P) Mhttps://github.com/Tvangeste/dictzip-win32/releases/
: H8 S. B4 [3 B
0 T  q1 P) Q" d2 bdsl相关软件:
' w5 T. o, I0 t0 e, @$ P; `( ODSLGD
  c$ {; ?. b) s" A' c
& t" I! o2 L7 z! L有参考价值的技术(讨论)贴:
( N* s3 c8 ?7 p- Q$ ^0. superfan89& t& V1 j/ \/ b0 j* V* C
[英汉-汉英] 21世纪大英汉词典&新汉英大词典【11/8/1更新】: https://www.pdawiki.com/forum/thread-7022-1-1.html, 帖子附件有ydDumper源代码! H& X" A* l  h0 }# i5 \% k% `
https://github.com/superfan89/IDMSKconv IDMSKconv源码
2 @3 W; P4 q# T) X$ J& t9 Mhttp://dicwizard.jp/jamming_ug.html( \, h9 v7 ?8 s2 g* Y% |4 O
https://www.pdawiki.com/forum/fo ... ctionary&page=3 63楼% Y( d! {; p, P. n9 W

5 g$ B7 T* J$ P6 i) n: j1. chigre
, b& W9 b# o$ U【直播完成】一个在线词典的离线MDX化制作[2012-11-29]:https://www.pdawiki.com/forum/thread-10260-1-1.html; S. z* _0 Q3 ^7 g0 |: q2 t" h
各种格式词典数据转TXT文本的工具软件(.BGL .LSD .LD2 .MDX STARDICT) https://www.pdawiki.com/forum/thread-10267-1-1.html, L2 p; B  @0 T% j1 M% H3 `; |
[其他语种] Z意汉汉意词典转制效果: https://www.pdawiki.com/forum/thread-10796-1-1.html" ]: E: r: Q6 X8 q. y. X
  h% v) ~5 O& d4 {
2. Hugh
* j7 x: O- B5 c: a4 u【图文】手把手教你[转换]+[排版] MDX格式词库: https://www.pdawiki.com/forum/thread-10689-1-1.html
2 i# r' I$ r& m# ?: i* N0 S/ m1 K6 ^/ m" s/ F0 Q- M' n
3. ldlcau* ~" A; ?4 S  X" s" x* G, N) Y
mdict版制作方法和常用工具: https://www.pdawiki.com/forum/thread-899-1-1.html
* G6 y8 y' a' L: W. k  }+ s7 f) o" `- @4 @! z  m) S3 p: P
4. Oeasy. {' O! @5 k8 U" T+ i2 P" m' Y
【2013.07.06】如何利用Microsoft Word排版制作.mdx? : https://www.pdawiki.com/forum/thread-10801-1-1.html3 F; r! d5 [3 K, l: \0 D
( Q1 l: Z- `* o4 ^. u! |+ \; n
5. jjcizi
9 P; m0 K) M" Q' I1 K5 E[BlueDict] 一种把Excel转换为MDX的方法: https://www.pdawiki.com/forum/thread-9600-1-1.html# J4 u3 R0 }4 \. S' M- c5 T
. D- C" F1 K6 `7 _0 k- M. I' Q
6. sunsmile23- O# [( @: m  w8 J9 p
汉英词典的汉字显示问题: https://www.pdawiki.com/forum/thread-10809-1-1.html
$ I* B) M5 C9 m* t8 H$ H: x1 svba如何正确地输出UTF-8编码文件: https://www.pdawiki.com/forum/thread-10832-1-1.html2 L& O1 w$ o6 q+ q  q+ F
5 {. s" p/ H0 {: g
7. sjn01& g- i# ]  g) ?. f8 _5 ^
求助,能否将Collins COBUILD 高阶英汉词典做成MDX?:https://www.pdawiki.com/forum/thread-6626-1-1.html; ^; j. J5 y' w* n7 n& x

9 R, M' Z, u5 d% H8. 惟吾无为
7 y' }4 W) h8 D+ K2 J- f% ylinux下制作离线百度百科的思路(含成品): https://www.pdawiki.com/forum/thread-9256-1-1.html% D% I# s2 T! J$ I6 t
  i* R/ u8 E" _
9. freegut' j2 ]9 U3 J! E5 ^3 K8 U
分享Lingvo到MDict的转换经验: https://www.pdawiki.com/forum/thread-5386-1-1.html/ t1 ?$ q) V( l2 ]

  r$ B4 k7 I, R2 f8 f8. zhu1234
, ~  }( ^, ^# Q2 u# WMdx制作流程: https://www.pdawiki.com/forum/thread-9440-1-1.html
2 h, x/ G+ O- G- P. c% U/ U' a6 p8 j3 J" u4 |. Y; a
9. 发哥
% x+ A  h# J( a& F2 }[英-英] ◆Dictionary of American Slang and Colloquial Expressions【20081222】:https://www.pdawiki.com/forum/fo ... ighlight=pdf%2Bword 8楼有pdf到html的经验。6 _3 \4 {5 J' J' [: F
& R9 h: L: m) U' X* c9 a, Z2 }
10. FHYVUCBRUG / m" ]2 Q6 X- E6 k/ U8 L
https://www.pdawiki.com/forum/thread-10617-9-1.html 第219、220、222、224楼。网盘有ConvToSpx.py0 w5 W$ u2 M# e

1 W5 y9 [6 c/ O3 X8 k- Z, `( b11. 手把手教你转换辞典+ x: n$ y) _" N5 \" G% c
http://bbs.emagic.org.cn/forum.p ... ntable&tid=52786 G: M2 B" ^2 |  n6 C6 _3 V
http://www31.ocn.ne.jp/~h_ishida/scripts.html% S, k# U# ~+ \
0 @' n2 }$ y( x6 ~# b; P/ d

- p5 J2 d% Z, H' `7 o  {--+ T0 c/ U8 K4 u' X- D1 {
http://blog.yeshj.com/luodean/$ p( W% p$ v. z
老马的原创空间:http://www.comicer.com/stronghorse/index.htm/ A3 h3 k% `. G5 R/ t
---
$ H/ o* v  R+ T  Z0 K( l  `1.  Ultra Edit中如何删除包含特定内容的行?+ x/ f$ g5 p& n* c
如某文件中有些行含有特定内容PTTAddress
. [, W& x  A* g+ Sa. 使用替换功能,勾选正则表达式(Regular Expressions),替换内容为%*PTTAddress*^p,替换为为空;
; {4 `; T* \! w5 m) @3 w8 t# p# Qb. 删除空行,使用替换功能,替换内容为^r^n^r^n,替换为为^r^n;
# ^2 U2 @  {* \" T/ J5 g  la. 使用搜索功能,勾选列出所含内容的行(List Lines Containing Characters),搜索内容为PTTAddress;" @0 M4 `3 W8 c8 r3 v3 s5 @
b. 在搜索结果中选择拷贝到粘贴板;  g0 [, L7 O5 M  K
c. 新建一空白文件,然后ctrl+v。

) b  w: S3 r, C$ w, P0 \; s
* }! t5 L3 p/ @) C0 x' J: i; A2. 使用wget如何登录后再下载3 Q& z( v+ V4 f
http://tilt.lib.tsinghua.edu.cn/node/213
2 c. N' ^+ y7 e1 o& n4 \5 E# E# b' \& ?, _) G. F
3. 如何批量修改文件后缀名?
) U  S/ S) }1 phttp://zhidao.baidu.com/question/423790075.html
2 _" `: Q. g7 i+ k% K' [
( U" @+ w- ~8 T$ S: E( w4. 如何把多个文本文档合并成一个( m. o/ X8 [% z1 [: u
http://zhidao.baidu.com/question/172524472.html5 H( u. U8 Z1 ?5 w7 o& j

" f6 ^, C! e9 `% {& s( o5. EPWING转txt
1 ~4 h- g7 K; @- Nhttp://coffeejp.com/bbs/thread-170502-1-1.html2 X7 B6 Q. N/ B8 L
另:数千部日文小说和EBwin字典网盘分享 http://www.douban.com/group/topic/26642847/ 6 M: p" M1 A$ P( @2 r) W3 x$ d
http://www.coffeejp.com/bbs/forum-22-1.html( x+ m, F' i+ x

, `4 ^- ]: i$ x* |6 n/ y/ C0 O6. bgl2StarDict8 U4 i4 R. @. d: p! q% ~9 B
http://code.google.com/p/stardict-3/wiki/ConvertBabylon1 X* O2 _! y; m+ ?3 Y+ o
5 B/ z2 c" _$ P( [$ @
7. Lingoes灵格斯电子词典LD2(LDF)文件单词提取器4 K  E& S& g& ?& P+ {; @/ V
http://code.google.com/p/lingoes-extractor/1 ~" y( M( I! n6 J5 D( f
-
$ s# k) C# o; @2 G' e) n2 _https://github.com/windylea/lingoes-converter
& A8 D  i- \2 ^+ O3 _; L3 Q4 a) `- u7 q8 }3 h
8. lsd 2 dsl
. R4 H2 H* ]8 S- |: U* a. R4 nhttp://alabaxblog.info/2013/02/lsd-to-dsl-mass/
: Q( Q4 E+ P2 v2 x7 z! Yhttp://www.windylea.com/blog/201 ... or-abbyy-lingvo-x5/  t' [! s7 Y/ F6 A  |4 }1 z  N

" K& N1 [5 a8 O( s9. An Analysis of MDX/MDD File Format" s# T  L; }/ f9 p' M$ e
https://bitbucket.org/xwang/mdict-analysis2 H' o# {+ U8 K) u5 W' Z5 b+ I1 w
http://m.newsmth.net/article/LinuxDev/56948?p=1
" r0 |' Y1 l# D- Ohttp://mdict.codeplex.com/
- D! @8 _% U( Z, `
/ y7 ]1 l9 p/ f) X+ d10.
4 l. _7 w! Q( \5 J' m  L/ Jhttp://hanzisearcher.cnblogs.com/
" {1 I1 A1 ^# S6 U6 t
( m& ]2 j1 Q% q11. RegEx Dotext 1.00 o9 e" h. T; @8 |" e6 V. l; c! Q" F
mdx制作必备:RegEx Dotext 1.0,可合并词条,提取信息等- G) E. c. Z' X4 ~
https://pdawiki.com/forum/thread-11430-1-1.html
" I, d4 j: u# D- W* u$ m( g. c6 w3 p# {& m
12. awk+wget实现批下载
% u1 Z3 W. z, O2 t8 p( ohttp://blog.sina.com.cn/s/blog_4a1f59bf0100nifm.html
1 Q/ Z) O8 I" V! S9 d+ ?  ^: t8 A! X$ f5 D  V$ s! ?
13. 【awk学习】gawk+wget+grep写的小爬虫
/ F1 i! M- f/ ^/ v. vhttp://bbs.byr.cn/#!article/Linux/104263
! K/ }! M. W# N- B
$ r% {+ o! t2 E$ I! G" L9 |14. wget批量下载文件后,如何重命名!" F5 S( R: q" Q1 z2 M$ Q
http://www.linuxsir.org/bbs/thread321272.html% [( }6 a/ i9 K0 d* L0 ?
6 `7 r' r1 u$ c- c) |9 k8 r. e, a7 x
15. http://www.regexlab.com/
) ^6 M. y1 {& S' R+ r# s$ @4 t& x( g0 c* K9 h* r
16. EBDump
; U' n& ]) D7 B' g9 q3 C& u1 qhttp://www31.ocn.ne.jp/~h_ishida/EBDump.html; `. p. S2 }% x# H2 U: C
http://www31.ocn.ne.jp/~h_ishida/EBDump/EBDump.html
$ M! Z$ H0 \- Z4 J5 z9 M1 B7 q: m1 g9 B) F3 ?7 f
17. Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup), h" w2 [7 n! v+ |- p4 {/ z
http://www.360doc.com/content/13/0929/20/11729272_318036381.shtml; [( Z) U; g" r5 _% v
* H5 a3 T+ j: P1 I
18. [转]用python爬虫抓站的一些技巧总结
! y6 P/ v4 ?( A4 {http://hi.baidu.com/txcbg/item/9b10b9562c275b9408be176a
, i4 k7 @7 Y3 |, S4 K5 S7 k3 ?3 [& e+ `& e
19. Python爬虫入门教程
4 v: W+ _, l. {, x/ D. C) u1 Mhttp://blog.csdn.net/column/details/why-bug.html* P, F0 c5 L% R  [3 {  f: K0 U
4 \, T: ]1 R8 [) l2 ?
=========
( X( h  Q+ Z5 ^8 Q7 y& E/ jEPWING相关:+ D! |. ~* Z( w# q0 x
http://hp.vector.co.jp/authors/VA021723/dessed/) T8 Y( H4 e5 y" y5 f

& R; d2 Y2 Q- X9 c7 e7 U

评分

2

查看全部评分

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2014-6-2 11:26:50 | 显示全部楼层
本帖最后由 meigen 于 2014-10-7 01:45 编辑
6 z$ g$ {* C; w+ d
  `* g) D! [' p$ V1 ]7 c3 K$ a提取Epwing词典图片的java代码
1 r2 w4 J9 n& ]5 H" k- }Epwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两种图片格式不同需要分别分析
7 c* _  w; f4 b2 ~2 Q3 E$ A首先是彩图
2 M$ M, @% T) G- K) k格式说明:每张图片以“data”(64 61 74 61)为起点标志,data后面四位是该图片的数据大小,比如“6B E3 00 00”表示这个图片大小是58219字节;后面是数据部分,要提取的内容就是这个
) `" h5 ^, x/ S提取有两种情况,一种是先用ebDump导出txt格式,然后用txt来提取,一种是直接用HONMON文件提取,省去了中间步骤
9 I$ ^; n' Z$ Q( ]2 P4 }  k先介绍用ebdump导出txt格式然后提取彩图: y2 X' `8 R. j2 B
  1. final static char[] DIGITS = {
    " }7 |, L1 f- f! Y
  2.     '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,  w2 N& O8 ^& l; }. z6 O! f
  3.     '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'
    9 f4 c) v% n" z4 @) F% g
  4. };
    % ]9 m4 d3 B: r' w% E# q
  5. public static String toHex(int i) {
    , H1 k* m: F2 ?6 \
  6.         char[] buf = {'0', '0', '0', '0', '0', '0', '0', '0'};
    % k, a% T7 G0 R5 s' u% i3 j4 W
  7.         int charPos = 8;5 h. i+ R& s1 e7 z5 u
  8.         int mask = 0xf;
    % Z2 v9 h+ O6 Z: H
  9.         do {
    3 ]) |  Y# A$ I
  10.             buf[--charPos] = digits[i & mask];
    ) d+ E' Q$ e' E4 m: |& d0 q3 c) _
  11.             i >>>= 4;* @" I1 _% M' l
  12.         } while (i != 0);, |( a6 `# r4 M  @7 L
  13.         if(charPos > 4) charPos = 4;
    4 j# n5 G- Y: q- J5 _! I: D
  14.         return new String(buf, charPos, (8 - charPos));7 H" v! l" p, _" a1 E
  15. }
    & m& B" J  j/ H" F2 S4 r% \! }
  16. static void getColorPic(String f, String path) {
    4 b$ f! C& \3 S% ?- f$ w
  17.     try {) J' j0 y3 {% C# c3 z3 l
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Shift_JIS"));4 T7 ^2 m6 e7 ]6 {5 M
  19.         OutputStream out = null;3 \# ~" M! {) r5 P# |- L
  20.         String line = "";
    - r# i' s" W6 K+ a& S: u* s- D
  21.         String block = "";
    3 ~, B4 g, h5 r# ]* R5 b) a+ u/ O
  22.         byte[] bs = new byte[2048];
    , }! S9 P( d$ t
  23.         int idx = 0;1 z$ w7 q" @% p0 H# G* W
  24.         if (!path.endsWith("/")) path += "/";
    6 s/ s" v: N2 K3 O
  25.         File fl = new File(path);
    6 h3 Z% ]# N7 |9 \+ R$ D! m- T
  26.         if(!fl.exists()) fl.mkdirs();
    6 L  ^6 g4 d' e: e3 a, S
  27.         while (((line = reader.readLine()) != null)) {8 K/ ?. }" M% W! I% J& ~
  28.             if (line.startsWith("block")) {! r0 e  E5 p6 q( B& R
  29.                 block = line.substring(6, line.indexOf("("));7 g4 ^- ?/ t. p
  30.                 System.out.println(block);1 b9 r5 `% {) z4 d8 c! z
  31.                 idx = 0;+ ~% I. R' ?- \) M
  32.             }; z# E: ^& h6 t( A5 b( ~
  33.             if (line.startsWith("0")) {, ?! c1 v- _& ~( f
  34.                 for(int i=0; i<16; i++) {7 u9 I3 y* g' |- O
  35.                     int a = CHARS.indexOf(line.charAt(5+3*i));" ?8 n1 M! h  F6 v; N
  36.                     int b = CHARS.indexOf(line.charAt(6+3*i));
      x  z/ s4 F$ f0 v
  37.                     bs[idx++] = (byte) (a << 4 | b);
    8 R; P8 y% d/ X
  38.                 }
    1 X7 N2 A) N% j% \& [, f
  39.             }9 h+ z* F" S  k6 i+ y: Q) c
  40.             int dts = -1;' G6 L; m# w- _+ V
  41.             int ws = 0;$ x( t. I  w/ H. X
  42.             if (idx == 2048) {
    % b7 U: ^2 j! q0 r
  43.                 for (int i=0; i<2044; i++) {
    * F8 b# k4 x& g9 {
  44.                     if (bs[i]==0x64 && bs[i+1]==0x61 && bs[i+2]==0x74 && bs[i+3]==0x61) {
    - L* l/ }+ j! C9 z, }
  45.                         dts = i;
    ' A% ^0 b+ W; t# [/ s
  46.                     }
    ' S# b+ [- r* T' v
  47.                 }
    8 @( |6 O- Z% {, M% g6 p
  48.                 if (dts != -1) {. j  i; p9 x" q! S5 w
  49.                     if (out != null) {
    . P4 q4 L& t% W' {5 [( m% B9 d' y
  50.                         out.write(bs, 0, dts);
    4 p6 Y- u# |0 s7 j' K
  51.                         out.flush();  h8 `# t* l! Q8 o0 g  Y' ]
  52.                         out.close();
    ' z( g1 u2 v, [4 c5 V
  53.                     }
    # ^* E8 T9 y6 M
  54.                     out = new BufferedOutputStream(new FileOutputStream(path+block+toHex(dts)+".bmp"));, B9 x7 N/ @' x* F: M
  55.                     if(dts > 2040) ws = dts-2040;
    2 ~: j! b  o# T. \! k3 O
  56.                     else out.write(bs, dts + 8, 2040 - dts);
    ) d5 l, m( I/ p: q) N
  57.                 } else if (out != null) out.write(bs, ws, 2048 - ws);
    + R8 W! L2 Q, _, y1 `; L1 b- u" K* N
  58.                 idx = 0;
    , R" A5 S+ p$ u
  59.             }
    " t5 t7 x% }7 S  o
  60.         }
    " i# C2 V0 C' c2 E9 F; M3 |# Z
  61.         reader.close();4 ?( ~/ e; w6 g2 q9 [
  62.         if (out != null) {$ s  I3 G. B. o+ B/ g& S
  63.             out.flush();5 @1 h9 w8 p9 d# `; w
  64.             out.close();
    : S* U2 E" ^/ F; U( c) V/ Y% E
  65.         }% H# f4 I4 f/ T! W
  66.     } catch (Exception e) {
    ' ]5 `/ B* c0 {
  67.         e.printStackTrace();. b4 C) ?1 a# ~& W2 w# @! `
  68.     }& G, v; h, q* U' k( V' U
  69. }
复制代码
getColorPic(String f, String path) 参数说明: f是图片导出的txt文件, path是保存图片的路径

点评

请问,还有 EPWING 转 MDX 的 工具 吗?  发表于 2018-9-6 14:32

评分

1

查看全部评分

该用户从未签到

发表于 2014-6-2 17:03:11 | 显示全部楼层
本帖最后由 meigen 于 2014-10-10 20:19 编辑 - p+ L+ h: q" g4 w
: D  d( k; k- a, }( A7 }
接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情
- W) w1 }/ O' a$ k先用ebdump提取出词典文本(本文),然后在里面获取单色图的代码(<1F44>开头,<1F64>结尾)! X- H/ W$ f4 H! O
可以看到% x2 o" [" {6 ]$ K
<1F44><0001><w=200,h=256>xxx<1F64>[0001A4BD:0027], n8 S* b* w3 |, `2 ?" E0 C. \
这里的w=200,h=256表示图片的尺寸,这个参数后面会用到" ?4 ^( W" ^' z& X
然后<1F64>后面的这一段[0001A4BD:0027]就是单色图数据地址了
+ Z0 w! {$ W& V5 m! p4 V9 e7 o  M4 y先写个Demo 把所有地址都提取出来,顺便排一下序,去掉重复:+ M% C. f# h2 A
  1. static void getMonoTag(String f) {1 B* a( f6 N" k: R. z! _' ^8 Y1 g8 S
  2.     try {/ X' }( J2 v4 S7 H, c
  3.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    . R2 Y) ~5 t5 _" o
  4.         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f+".mono.txt"), "UTF-8"));! N( h& b- V: {
  5.         String line;
    / X9 Y# P5 I2 l/ S7 q! {
  6.         ArrayList<String> monos = new ArrayList<String>();; W: u$ k! t3 e# d: T/ f
  7.         while (((line = reader.readLine()) != null)) {: w1 b! K# E, ~1 i. t/ l
  8.             while (line.contains("<1F64>")) {
    ' t+ S% P% u# P
  9.                 line = line.substring(line.indexOf("<1F64>") + 6);
    " m- c: s% O6 _' M; s# S* `
  10.                 monos.add(line.substring(0, 15));
    ; z1 \5 h/ d6 y' j' q4 H
  11.             }; R; W) H/ C7 B8 C; z- \# `$ [* A6 }
  12.         }
      l( S, n; X# k- b% C+ F: \
  13.         reader.close();: }5 ?8 [) V! ^
  14.         String[] monoa = new String[monos.size()];3 |# x. i8 A+ h+ ~5 v4 O# T' Z
  15.         monos.toArray(monoa);
      M/ V8 q- {4 [7 ?/ O
  16.         Arrays.sort(monoa);
    4 b  L2 R9 B, t7 b' p/ m
  17.         String last = "";
    : M% J$ r5 {8 {+ c* J$ o
  18.         for (int i=0; i<monoa.length; i++) {
    ( q: `/ i5 |1 g7 c
  19.             if (!monoa[i].equals(last))% R0 ?7 b8 q5 z: J+ R) z  h" H" a
  20.                 writer.write(monoa[i] + "\r\n");
    . w% k# O# B& @, Y, m$ v
  21.             last = monoa[i];
    ! v* k9 h( \, T. Z3 F0 p
  22.         }
    5 }/ x! z* L' K
  23.         writer.close();
    ' S/ J$ l0 i2 R$ j. e# ~9 f8 z3 ]
  24.     } catch (Exception e) {' R/ _  y; K/ D( n
  25.         e.printStackTrace();
    $ C) l$ V0 ~& j: u1 b) |
  26.     }% o" t, h1 q/ w6 [: S7 r& Y( m
  27. }
复制代码
: B+ ?9 @" W, N! Q) O
得到了一个.mono.txt的文件: W6 @2 j1 D3 G+ @
然后开始提取:% r9 Q  G! t8 ]
上面有提到w=200,h=256这两个参数,不过epwing好像弄反了,200是高,256是宽。 - -
/ H" {1 T5 J5 R+ a提取过程中需要手动加上图像的文件头,可自行百度bmp文件格式
  T* ]4 V* ]0 @( f, {
  1. static final int WIDTH = 256;
    4 q1 B+ n! N6 G# K8 f
  2. static final int HEIGHT = 200;
    # v" H6 I% L; a, m; I
  3. static final int WIDTH2 = 32;/ k+ k; d: X+ g, i: {
  4. static final int SIZE = WIDTH2 * HEIGHT;9 ?6 E4 e! E- N9 `4 B+ z* V
  5. static final int FILE_LEN = SIZE + 62;& k4 _/ D# D0 {+ N+ D# o
  6. static byte[] filehead = {0x42, 0x4d,
    $ W0 N; V- u. k9 r( }! K" x5 Z
  7.     (byte) (FILE_LEN & 0xff), (byte) ((FILE_LEN >> 8) & 0xff), (byte) ((FILE_LEN >> 16) & 0xff), (byte) ((FILE_LEN >> 24) & 0xff),
    & R# l& o8 g5 _
  8.     0, 0, 0, 0, 0x3e, 0, 0, 0};" Z% f; i' o5 R; f/ F3 G; {6 ~! _
  9. static byte[] infohead = {0x28, 0, 0, 0,
    5 o2 ]5 _. \- v0 }$ n
  10.     (byte) (WIDTH & 0xff), (byte) ((WIDTH >> 8) & 0xff), (byte) ((WIDTH >> 16) & 0xff), (byte) ((WIDTH >> 24) & 0xff),
    1 N1 L- |3 `6 Y4 @/ }) N! ^
  11.     (byte) (HEIGHT & 0xff), (byte) ((HEIGHT >> 8) & 0xff), (byte) ((HEIGHT >> 16) & 0xff), (byte) ((HEIGHT >> 24) & 0xff),1 Q: Q6 G7 f5 R
  12.     1, 0, 1, 0, 0, 0, 0, 0,
    " k/ D4 f0 X6 i4 {6 R# e2 R
  13.     (byte) (SIZE & 0xff), (byte) ((SIZE >> 8) & 0xff), (byte) ((SIZE >> 16) & 0xff), (byte) ((SIZE >> 24) & 0xff),2 N* t/ r; p) H$ z5 k3 R
  14.     0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0};
    . G! q" x1 j, G3 Q/ D
  15. static void getMonoPic(String f, String m) {
    $ f. B) R% [( x
  16.     try {+ {/ R  @: w7 J3 v/ g1 @0 ^/ k
  17.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));* A  N; R& R: X! g  K+ `( }
  18.         BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(m+".txt"), "UTF-8"));
    . S4 z) G8 n) D% ]8 `
  19.         OutputStream out = null;
      w. G2 n; M7 M' A1 O1 ]0 P; |, A
  20.         String line = "";4 m4 G/ C$ r  a1 C' ]
  21.         String line2 = reader2.readLine();
    ( K% o4 q" I% _; g' ~! n: W$ C+ S
  22.         int block = 0;7 n. B8 W" b+ Y. {
  23.         int block2 = Integer.parseInt(line2.substring(1, 9), 16);" e5 O# r+ {7 v6 a
  24.         int offs = Integer.parseInt(line2.substring(10, 14), 16);
    + j9 `3 u, _0 u; U$ n7 B& X! h! E; w
  25.         byte[] temp = new byte[2048];
    3 g6 ]+ |8 w) y) X! ]
  26.         byte[] data = new byte[WIDTH2 * HEIGHT];0 q) n/ y3 k; ~9 N7 y
  27.         int[] idxs = new int[WIDTH2 * HEIGHT];9 b1 z: Z2 P) u0 n) Q
  28.         for (int i=0; i<HEIGHT; i++) {: e7 z; P0 U6 M- M
  29.             idxs[i * WIDTH2] = (HEIGHT - 1 - i) * WIDTH2;
    2 \' e$ N4 L) w- v8 ^5 }
  30.             for (int j=1; j<WIDTH2; j++)! K9 E& T# Y# X7 c" h7 m4 ]
  31.                 idxs[i * WIDTH2 + j] = idxs[i * WIDTH2 + j - 1] + 1;/ E- _3 Z0 B4 ^
  32.         }9 E6 {8 u0 S0 ~: Q
  33.         int idx = 0;4 t7 ]" f. j( x
  34.         int didx = 0;
    , @; K# M6 s# a
  35.         while (((line = reader.readLine()) != null)) {
    1 d: T1 ^3 _7 m  x
  36.             if(line.startsWith("block")) {! x$ l0 U, E) M6 ]8 R
  37.                 block = Integer.parseInt(line.substring(6, 11), 16);+ ~1 N- ?9 j7 _" k
  38.                 idx = 0;
    # E6 q% i. z$ D/ g
  39.             }
    ( d: S' F; l# i  _9 F+ b& ?$ G# g
  40.             if(line.startsWith("0")) {
    / a5 i, X9 u( X( V1 w
  41.                 for(int i=0; i<16; i++) {: ^3 B+ D* Q9 I3 X2 `8 }" c
  42.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    $ c. f1 _# d: B. K" m
  43.                     int b = CHARS.indexOf(line.charAt(6+3*i));, g6 n7 h* B. o) T
  44.                     temp[idx++] = (byte) (a << 4 | b);
    * i2 P8 Y( ]& k* c8 B% ?
  45.                 }
    # _2 Y  ]5 L' X: |) c2 H3 U
  46.             }; B1 {$ R" w) j! E
  47.             if (idx == 2048) {
    : Y% ?$ W3 Z0 k0 W0 t
  48.                 if(block < block2) continue;
    ; Y, ]) P: [! H, X+ b
  49.                 int start = offs;! `/ G% R. G: ~! ~2 A! d& q8 U
  50.                 if(didx != 0) start = 0;
    ; I) O- T( {5 B# ^* c. S
  51.                 for(int i=0; i<2048; i++) {. q3 C4 @, s/ V( t$ d$ ~9 F; T' b
  52.                     if(i >= start)8 S: r; e4 Q5 k' B) [
  53.                         data[idxs[didx++]] = temp[i];
    " G2 t. f, D3 X# T+ r
  54.                     if(didx == WIDTH2 * HEIGHT) {
    ' \: B+ ]( Y. d  T+ ^8 F1 k
  55.                         System.out.println(toHex(block2)+"."+toHex(offs));) M5 j8 p" i3 v: J! g- @
  56.                         out = new BufferedOutputStream(new FileOutputStream("pic/"+toHex(block2)+toHex(offs)+".bmp"));
    4 ^; w" S) F! O& D4 L( a4 d
  57.                         out.write(filehead);6 t5 ?* T+ P3 \1 o2 v2 \% v8 a
  58.                         out.write(infohead);
    . E% Q6 W8 L& E& `6 e; M! M
  59.                         out.write(data);) I) B; o0 }" b  W7 w' l
  60.                         out.flush();
    % S- F& d5 b2 Z' f) V. y
  61.                         out.close();
    3 P; ?) R9 ]+ m& ]) f  Z$ m
  62.                         line2 = reader2.readLine();
    % _5 {! K6 ]& y5 Y
  63.                         if(line2 == null || line2.equals("")) {
    / `5 T+ `, x$ y
  64.                             reader.close();1 ?0 G5 ]3 }7 k, l) `2 S* V' D
  65.                             reader2.close();
    ; w5 B  o, m, b$ A- V1 {  F; _" j
  66.                             return;" w5 d; @" j, \3 n9 g  f
  67.                         }
    ( j5 Q3 L) d8 ?1 d3 \1 J; f
  68.                         block2 = Integer.parseInt(line2.substring(1, 9), 16);1 x7 P+ ~; W3 H4 s  j$ ?
  69.                         offs = Integer.parseInt(line2.substring(10, 14), 16);. v* a8 D/ l. m6 |3 g
  70.                         didx = 0;
    1 B. t9 t% V) g" F' E" Y
  71.                     }
    , \  j+ v& ~4 W, k5 V
  72.                 }
    3 y( g3 G% D$ g
  73.                 idx = 0;
    + S5 b% Y6 r2 A; j6 |: N! S
  74.             }
    9 f. D4 |* @3 R3 p  n
  75.         }! f6 s) V7 K) X
  76.         reader.close();
    3 N' F- a- l5 t% O+ E3 ]" Y
  77.         reader2.close();
    % @9 \) R6 [# g. h6 A) N$ u
  78.     } catch (Exception e) {
    ! S" Q; c* D' p# Z- [1 Z$ D8 M
  79.         e.printStackTrace();
    2 Q2 F: }, f# [& @
  80.     }
    0 y4 ~- t7 W1 i, X; \. Z
  81. }
复制代码

* @2 e+ \6 i$ Z1 Y待编辑...
+ Y  k/ V1 H: E7 L! M0 {* x" v& I/ r- W* q
回15楼:9 A5 K# H& e. w$ c* _& ~0 X  S
能把代码用附件形式上传么?顺便使用说明用英文。

, x/ w/ G% Q8 \6 v代码有一些要改动的地方, 我完善一下就传附件' J  K; [' @( J6 H# l1 e
另外用英文说明这...{:11_336:}   K4 x. L/ }4 C( X7 J  X* V
我先用中文注释一下, 然后再慢慢翻译

评分

1

查看全部评分

  • TA的每日心情
    开心
    2019-8-11 07:55
  • 签到天数: 606 天

    [LV.9]以坛为家II

    发表于 2013-8-25 17:56:54 来自手机 | 显示全部楼层
    楼主辛苦了。

    该用户从未签到

    发表于 2013-8-28 11:29:54 | 显示全部楼层

    该用户从未签到

    发表于 2013-10-23 12:56:25 | 显示全部楼层
    这帖子太好了。现在上的课正好跟html,jsp,sql有关,可以有针对性地学一学了~~

    该用户从未签到

    发表于 2013-10-24 09:37:16 | 显示全部楼层
    辛苦了!
  • TA的每日心情
    开心
    2021-1-11 09:04
  • 签到天数: 83 天

    [LV.6]常住居民II

    发表于 2013-11-1 23:10:03 | 显示全部楼层
    对我们这些没有软件基础的可咋整?

    该用户从未签到

    发表于 2013-11-3 10:47:35 | 显示全部楼层
    不懂,只知道怎么使用,仅以回帖表示赞同
  • TA的每日心情
    擦汗
    2025-3-22 09:30
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2013-11-7 08:29:45 | 显示全部楼层
    楼主辛苦了,谢谢分享

    该用户从未签到

     楼主| 发表于 2013-11-8 00:02:28 | 显示全部楼层
    高手们都歇了,或者对词典不感兴趣。) j7 ?6 L; a+ k. M6 N- W
    其实目前新的词典资源,主要集中在iOS、Android应用上,一些数据dat啊,db啊,都有加密,要破解啊,技术含量很高噢。
    & y% l+ T0 u* P( |" `" }$ @-5 Z/ z* g/ e. K2 W/ ~/ f' Y4 Q
    一些扫描的词典,要做成pdf,基本就只有靠神人出手了。网络合作校对或录入?我从来不觉得这事儿靠谱,志同道合的、对同一语种同一词典感兴趣的人太少太少。慢慢等吧。{:5_214:}
    / |6 }7 e" y) n7 t

    该用户从未签到

    发表于 2013-11-11 10:58:55 | 显示全部楼层
    一直想制作啊,太复杂了,文科生一枚,看得我头晕。5 Q( D  h8 x2 m- U
    其实我只是想制作一个自己个人的词典,因为自己从事英语教学,有些单词讲解有自己的方式,要是加进去,以后备课就方便了。
  • TA的每日心情
    难过
    2023-11-26 08:44
  • 签到天数: 49 天

    [LV.5]常住居民I

    发表于 2014-1-21 18:03:13 | 显示全部楼层
    看看,学习!谢谢

    该用户从未签到

    发表于 2014-2-18 10:51:18 来自手机 | 显示全部楼层
    这个很赞!
    8 f9 D, p3 B& P最近打算扒维基来着。

    该用户从未签到

    发表于 2014-6-1 17:32:34 | 显示全部楼层
    好贴收藏。

    该用户从未签到

     楼主| 发表于 2014-6-2 14:18:15 | 显示全部楼层
    meigen 发表于 2014-6-2 11:26   a, K! I+ a* d* d0 k
    提取Epwing词典图片的java代码
    : Y$ ?' G2 _, G$ k8 nEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两 ...
    - L4 u/ R( t4 z) T2 r& k- Z- U2 @
    {:5_227:} ) G/ f6 `9 o- ~0 W: I' M$ {
    ; p2 \$ w: \4 j6 h" G5 o
    论坛用了防转载插件还是什么的,复制代码的时候后边会加上一堆乱码。
    % f; K# P& e+ T1 s6 R: t" \, G0 {能把代码用附件形式上传么?顺便使用说明用英文。
    - _4 Y( _( T9 d辛苦辛苦~
    ( {) A3 i6 F: A$ b4 Y

    该用户从未签到

     楼主| 发表于 2014-6-2 19:29:10 | 显示全部楼层
    本帖最后由 Oeasy 于 2014-6-2 19:31 编辑
    / f" i! I' l3 s$ M4 R7 y
    meigen 发表于 2014-6-2 17:03   ^4 y; x  i' J& J& y7 V
    接14楼, 单色图的提取稍微麻烦些, 他里面只有数据部分而缺少文件头, 这个是比较头疼的事情
    8 t2 c' j! G3 H7 n( g我们可以先到词 ...

    # Y) B' Q& G( B9 C. Z# X7 _# C8 G+ p& D8 U7 |- v- X3 y
    {:10_240:}   S1 X: }  I- g% C2 g6 W# t

    2 D9 L7 n4 V) a0 ]7 R2 b。。。。5 z+ ~$ c! L& D
    其实GoldenDict支持EPWING了,尚稍有瑕疵,但已然近乎完美,不敢要求更多,感谢Abs62大神。
    2 E3 y/ R/ v: n& yhttp://goldendict.org/forum/viewtopic.php?f=4&t=2922
    ! x% L! B/ y; I/ v+ U3 Bhttp://goldendict.org/forum/view ... =2091&start=300! R- z& H& Y) y5 c' P8 _5 T
    不过能把EPWING转出文本 & 图片,制作为dsl、mdx等,进行个性化排版,这些啊,始终是让人愉悦和有成就感的事情。。。{:10_228:}
    / n; _: {4 x+ w- f7 f: A0 p
    " e4 `5 j0 q; ?# i; T; U

    该用户从未签到

    发表于 2014-6-8 18:42:15 | 显示全部楼层
    这个帖子太棒了!必须好好学习一下啊。
  • TA的每日心情
    奋斗
    2018-12-10 10:05
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2014-6-23 15:54:42 | 显示全部楼层
    几位大神都离开啊,只求不定期更新词库
  • TA的每日心情
    开心
    2021-5-6 12:15
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-7-31 20:23:48 | 显示全部楼层
    。。。长期学习阵地

    该用户从未签到

    发表于 2014-8-21 08:12:58 | 显示全部楼层
    文本编辑器:Editpad无论是对正则的支持还是替换的速度已经把EmEditor、Notepad++之流甩开几条街了。
    ) z* H( B( X! G5 O) \0 d6 R# R

    该用户从未签到

    发表于 2015-1-2 00:39:31 | 显示全部楼层
    其实几个程序员常用的文本编辑器功能都蛮强大的,ue功能最多,复杂,emediter不错,对中日韩字体支持最好
  • TA的每日心情
    开心
    2019-5-18 14:33
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2015-10-18 00:11:23 来自手机 | 显示全部楼层
    meigen 发表于 2014-6-2 17:03/ ^9 \9 x: f" `9 d
    接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情
    % N9 `# r" x5 V  q+ c; Y9 Q+ A. F先用ebdump提取 ...

    ) }% M7 }9 f3 ~. \9 h* D7 X好文,谢谢。

    该用户从未签到

    发表于 2016-1-30 21:11:09 | 显示全部楼层
    不懂,仅以回帖表示赞同
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2026-9-2 00:03 , Processed in 0.048195 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表